ページを iframe に読み込むリンクがあります。Google Chrome のメモリ ヒープ プロファイラを使用してメモリ内のデータの蓄積を監視していたところ、メモリにリークが発生していることに気付きました。
ページを読み込んで、最初のスナップショットを撮りました2.69 MB
。ページをiframeに開くリンクをクリックし、別のスナップショットを撮って14.58 MB
合計しました. 次の jquery スニペットを使用して iframe を削除しました。
$('#myframe').unbind();
$('#myframe').remove();
/*
* By the way, I also tried $('#myframe > *') as a selector.
* It still didn't work. Even if it would, it doesn't look like a viable solution to me.
* It looks too resource intensive.
*
* I forgot to mention that I am not using Ajax to load my pages
*/
私は別のスナップショットを取り、初期値からの5.28 MB
偏差を示すものを取得しました。これは、2.59 MB
私の理解によれば、メモリリークを示しています。
さて、私の質問は次のとおりです: iframe (読み込まれたドキュメントを含む) を削除すると、ガベージ コレクターは、そのドキュメントに含まれるすべてのオブジェクトもメモリから削除する必要があると判断しませんか? または、これを手動で行う必要がありますか?
ドキュメントをiframeにロードしても、そのサイズは親ページのメモリ使用に影響しないと思いました。別のウィンドウと見なされると思いますが、明らかに、それは十分な情報に基づいた仮定ではありませんでした。
これに取り組む方法について何か提案はありますか?
ありがとうございました。