1

私はさらに JavaScript のメモリ リークに飛び込みました。Ilya Kantorの記事を読んでいるときに、私の疑問が生じました。

Ilya が指摘しているように、DOM/COM オブジェクトと JavaScript オブジェクトの間の循環参照によって引き起こされる ie のメモリ リークを認識しています。

私はまた、デビッド・グラッサーによって説明されたシングルトンとして実装されている内部関数のレキシカル環境によって引き起こされるメモリリークを認識しています。

私の場合は異なります。次の例には参照がありませんが、どの JavaScript エンジンがリークするか、つまりのレキシカル環境 にdata割り当てますか?datawrapped

function factory () {
  var data = 'bytebytebyte';
  function wrapped () {
    // (1), pass
  }
  // (2), clean up?
  return wrapped;
}
  1. wrappedへの参照はありませんdata
  2. data=nullとにかく漏れないように設定する必要がありますか?

Ilya の発言 (dataに設定されている場合null)

現在、データは LexicalEnvironment のプロパティとしてメモリ内に残っていますが、それほど多くのスペースを占有していません。

デビッド 言う

幸いなことに、JavaScript の実装 (または少なくとも現在の Chrome) はdata[ wrapped...]

Scott Christopher は、彼の回答で、同じではないにしても同様の質問を提起しました。

これは漠然としすぎています。明確な答えがあれば最高です。setInterval上記の方法を実行しているときに、誰かが ie-vm で mem-usage グラフを描画したことさえありfactoryますか?

4

0 に答える 0