javascript分配哪些闭包变量?

时间:2015-07-03 10:34:35

标签: javascript memory-leaks closures lexical-closures

我还有另一次潜入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;
}
  1. wrapped没有提及data
  2. 你是否必须设置data=null以免泄漏它?
  3. Ilya说(如果data设置为null

      

    现在数据仍然作为LexicalEnvironment的属性保留在内存中,但它不会占用太多空间。

    大卫说

      

    幸运的是,JavaScript实施(或至少是当前的Chrome)足够智能,可以注意到data [...]

    中未使用wrapped
    斯科特·克里斯托弗在他的answer中提出了一个类似的问题。

    这太模糊了,一个明确的答案会很棒!也许有人甚至碰巧在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图?

0 个答案:

没有答案