在Nashorn ScriptObjects的上下文中什么是“溢出”?

时间:2015-07-10 18:53:38

标签: nashorn

我正在分析我们的一些Nashorn代码。我们在执行之间汇集并重用ScriptContexts。我注意到ScriptContext在某处泄漏了内存,我可以将其追溯到spill类中的Global属性:

Profile of spill object

泄漏有什么作用?有没有办法清除它?

1 个答案:

答案 0 :(得分:1)

如果在创建并初始化“obj”之后在对象之后添加属性(如“obj.x = 34”),Nashorn会创建“溢出”区域或扩展已创建的“溢出”区域以保存这些附加属性。如果在构造函数(或对象文字)中初始化所有属性,则该对象中不会有任何“溢出”区域。全局本质上是“永久地”扩展对象 - 因为您在编写更多代码时不断创建更多变量。因此,全球会出现漏油事件。