我还有另一次潜入javascript内存泄漏。我在阅读Ilya Kantor的文章时提出了我的问题。
我知道由于Ilya指出的DOM / COM对象和javascript对象之间的循环引用导致的内存泄漏。
我也知道由内部函数的词汇环境实现的内存泄漏是由david glasser解释的单例实现的。
我的情况不同:哪个javascript引擎(如果有的话)会泄漏data
,即将data
分配到wrapped
的词汇环境,尽管以下示例中没有引用?
function factory () {
var data = 'bytebytebyte';
function wrapped () {
// (1), pass
}
// (2), clean up?
return wrapped;
}
wrapped
没有提及data
data=null
以免泄漏它? Ilya说(如果data
设置为null
)
现在数据仍然作为LexicalEnvironment的属性保留在内存中,但它不会占用太多空间。
大卫说
斯科特·克里斯托弗在他的answer中提出了一个类似的问题。幸运的是,JavaScript实施(或至少是当前的Chrome)足够智能,可以注意到
中未使用data
[...]wrapped
这太模糊了,一个明确的答案会很棒!也许有人甚至碰巧在setInterval
- factory
上面的 JFileChooser openFile = new JFileChooser();
openFile.setFileFilter(new FileNameExtensionFilter("Image files (*.GIF,*.PNG,*.JPG, *.JPEG)", "GIF","PNG","JPG", "JPEG"));
int result = openFile.showOpenDialog(null);
方法上在ie-vm上绘制了一个mem-usage图?