http://www.ibm.com/developerworks/web/library/wa-memleak/このリンクのリスト5は、objがdom要素への参照であり、dom要素がobjへの参照を持っている状況を示しています。したがって、メモリリークが発生します。コード内の何がDOM要素にobjへの参照を持たせるのかを確認するのに苦労しています。誰かが私にそれを説明できますか?
ページからの抜粋:
リスト5に、JavaScriptオブジェクト(obj)にDOMオブジェクト(id "element"で参照される)への参照が含まれているクロージャを示します。次に、DOM要素にはJavaScriptobjへの参照があります。結果として生じるJavaScriptオブジェクトとDOMオブジェクト間の循環参照により、メモリリークが発生します。
リスト5.イベント処理のメモリー・リーク・パターン
<html>
<body>
<script type="text/javascript">
document.write("Program to illustrate memory leak via closure");
window.onload=function outerFunction(){
var obj = document.getElementById("element");
obj.onclick=function innerFunction(){
alert("Hi! I will leak");
};
obj.bigString=new Array(1000).join(new Array(2000).join("XXXXX"));
// This is used to make the leak significant
};
</script>
<button id="element">Click Me</button>
</body>
</html>