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

Ach*_*les 7 javascript jquery memory-leaks memory-management

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

The*_*pha 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});  
}  
Run Code Online (Sandbox Code Playgroud)

在第一种情况下,每个循环都会创建一个新的(匿名)函数。在第二种情况下,先前声明的相同函数用作事件处理程序。这会导致内存消耗更小。此外,在第一种情况下,由于没有保留对匿名函数的引用,因此不可能调用 element.removeEventListener 因为我们没有对处理程序的引用,而在第二种情况下,可以这样做

myElement.removeEventListener("click", processEvent, false)
Run Code Online (Sandbox Code Playgroud)