私はさらに JavaScript のメモリ リークに飛び込みました。Ilya Kantorの記事を読んでいるときに、私の疑問が生じました。
Ilya が指摘しているように、DOM/COM オブジェクトと JavaScript オブジェクトの間の循環参照によって引き起こされる ie のメモリ リークを認識しています。
私はまた、デビッド・グラッサーによって説明されたシングルトンとして実装されている内部関数のレキシカル環境によって引き起こされるメモリリークを認識しています。
私の場合は異なります。次の例には参照がありませんが、どの 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 のプロパティとしてメモリ内に残っていますが、それほど多くのスペースを占有していません。
デビッド 言う
幸いなことに、JavaScript の実装 (または少なくとも現在の Chrome) は
data
[wrapped
...]
Scott Christopher は、彼の回答で、同じではないにしても同様の質問を提起しました。
これは漠然としすぎています。明確な答えがあれば最高です。setInterval
上記の方法を実行しているときに、誰かが ie-vm で mem-usage グラフを描画したことさえありfactory
ますか?