我的问题假设您正在创建一个将显示“很长时间”的网页。我很好奇在这种情况下使用 JQuery/JavaScript 时会导致内存泄漏的一些常见问题是什么?例如,当您调用$.remove()
元素集合时,内存方面会发生什么?谢谢!
问问题
695 次
1 回答
1
JavaScript 使用垃圾回收来回收不再使用的字符串、对象、数组和函数所占用的内存。这让程序员不必自己显式地释放内存,这是使 JavaScript 编程比 C 编程更容易的重要部分。
参考资料: 检查此以获取更多信息和关于 SO 的答案。
事件注册机制中的内存问题MDN
var i;
var els = document.getElementsByTagName('*');
// Case 1
for(i=0 ; i<els.length ; i++){
els[i].addEventListener("click", function(e){/*do something*/}, false});
}
// Case 2
function processEvent(e){
/*do something*/
}
for(i=0 ; i<els.length ; i++){
els[i].addEventListener("click", processEvent, false});
}
在第一种情况下,在每个循环转弯处创建一个新的(匿名)函数。在第二种情况下,相同的先前声明的函数用作事件处理程序。这导致更小的内存消耗。此外,在第一种情况下,由于没有保留对匿名函数的引用,因此无法调用 element.removeEventListener 因为我们没有对处理程序的引用,而在第二种情况下,可以这样做
myElement.removeEventListener("click", processEvent, false)
于 2012-04-25T14:54:37.180 回答