js内存泄露的规避方法
转载请注明出处:http://blog.csdn.net/chenglirui123/article/details/75014518
1、全局变量引起的内存泄漏
function A(){
a ="全局变量";//a为全局变量,不可被垃圾回收
}
处理方式:
后面函数对a进行处理为null
2、闭包引起的内存泄漏
var closures= (function(){
var closure= 'xxxxxx';// 被闭包所引用,不会被回收
return function(){
console.log(closure);
}
})()
处理方式:
var closures= (function(){
var closure= 'xxxxxx';// 被闭包所引用,不会被回收
return function(){
console.log(closure);
}
closure = null;//释放内存
})()
3、循环引用
var a = new Object();
var b = new Object();
a.r = b;
b.r = a;
4、DOM元素事件
function testHandler(){
var element = document.getElementById("example");
element.onclick = function(){
alert("test");//只要DOM元素存在,至少被引用一次,占用的内存无法被回收
}
}
处理方式:
function testHandler(){
var element = document.getElementById("example");
var id = element.id;
element.onclick = function(){
alert(id);
}
element = null;//解除对DOM对象的引用,顺利减少其引用数,确保正常回收被占用的内存
}