1

我又一次深入研究了 javascript 内存泄漏。我的问题是在阅读Ilya Kantor的文章时提出的。

正如 Ilya 指出的那样,我知道 DOM-/COM-对象和 javascript 对象之间的循环引用导致 ie 的内存泄漏。

我也知道由于内部函数的词法环境被实现为david glasser解释的单例而导致的内存泄漏。

我的情况不同:哪些 javascript 引擎(如果有)会泄漏,data即分配datawrapped的词法环境,尽管在以下示例中没有引用?

function factory () {
  var data = 'bytebytebyte';
  function wrapped () {
    // (1), pass
  }
  // (2), clean up?
  return wrapped;
}
  1. wrapped没有参考data
  2. 无论如何你都必须设置data=null不泄漏它吗?

伊利亚说(如果data设置为null

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

大卫 说

幸运的是,JavaScript 实现(或至少是当前的 Chrome)足够聪明,可以注意到data[ wrapped...]

斯科特克里斯托弗在他的回答中提出了一个类似的问题,如果不是同一个问题。

这太模糊了,一个明确的答案会很棒!setInterval也许有人在使用上述方法时碰巧在 ie-vm 上绘制了内存使用图factory

4

0 回答 0