使用JQuery/JavaScript导致内存泄漏的常见方法有哪些?
What are some common ways to cause memory leaks using JQuery/JavaScript?
我的问题假设您正在创建一个将显示"很长时间"的网页。 我很好奇在这种情况下使用 JQuery/JavaScript 时会导致内存泄漏的一些常见陷阱是什么? 例如,当您在元素集合上调用$.remove()
时,内存方面会发生什么? 谢谢!
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)
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 数组在递归方法中设置为null
- 打破承诺链的好方法是什么
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- 使用“;这个“;JavaScript原型方法中的关键字
- 序列化数据属性中对象的最可靠方法
- 使用Objective-C的JavaScript注入方法
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 有没有一种方法可以防止img get请求使用css或js发生
- 什么's传递对象的最佳或最常见方式'的方法作为回调
- 在 node 中使用中间件与 express 和 connect 的最常见方法是什么?
- 使用JQuery/JavaScript导致内存泄漏的常见方法有哪些?
- 在Backbone.JS中一次性获取有效负载和元数据的常见方法
- 从nodejs中的路径中剥离父目录的常见方法是什么
- jQuery Mobile-无法使用常见的jQuery方法隐藏按钮
- 检查js函数的所有参数是否为非空,最有效/最常见的方法是什么
- 处理常见JQuery事件处理模式的另一种方法
- 有没有一种常见的方法可以以类似于css的方式导入javascript文件;s@导入
- 使用React和Redux在UI中成功处理REST POST操作的常见方法是什么?