大家好,
我想知道为什么这是内存泄漏:
window.onload = function outerFunction(){
var obj = document.getElementById("app")
obj.onClick = function innerFunction(){
alert("Hi, I will leak");
}
}
<button id="app">Click Me</button>
这个例子的意思是:一个 JavaScript 对象(
obj
)包含对 DOM 对象(由 id “app” 引用)的引用。DOM 元素反过来又引用 JavaScript obj
,这导致 JavaScript 对象和 DOM 对象之间产生循环引用,从而造成内存泄漏。解决方法是:在
function outerFunction
的末尾,将 obj = null
。我的疑惑是:
为什么它说 DOM 有对那个
obj
的引用?我无法理解这一点。为什么这会导致内存泄漏?
obj
不再被引用,它也无法被垃圾回收。 - Felix Kling