使用JQuery / JavaScript导致内存泄漏的常见方法有哪些?

时间:2012-04-25 14:14:38

标签: javascript jquery memory-management memory-leaks

我的问题是假设您正在创建一个“长时间”显示的网页。我很好奇在这种情况下使用JQuery / JavaScript会导致内存泄漏的常见问题是什么?例如,当您在元素集合上调用$.remove()时,内存会发生什么?谢谢!

1 个答案:

答案 0 :(得分:1)

  

JavaScript使用垃圾收集来回收占用的内存   不再使用的字符串,对象,数组和函数。   这使程序员不必显式释放   记住自己,是JavaScript的重要组成部分   编程比C编程更容易。

参考文献: Check this for morean answer on 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)