level 10
sky13nice
楼主
开发过程中遇到那些内存泄漏的情况,如何解决的?
内存泄露是指一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束。
1、当页面中元素被移除或替换时,若元素绑定的事件仍没被移除,在IE中不会作出恰当处理,此时要先手工移除事件,不然会存在内存泄露.
<div id="myDiv">
<input type="button" value="Click me" id="myBtn">
</div>
<script type="text/javascript">
var btn = document.getElementById("myBtn");
btn.onclick = function(){
btn.onclick = null;
document.getElementById("myDiv").innerHTML = "Processing...";
}
</script>
2、闭包可以维持函数内局部变量,使其得不到释放,解决之道,将事件处理函数定义在外部,解除闭包
function bindEvent()
{
var obj=document.createElement("XXX");
obj.onclick=onclickHandler;
}
function onclickHandler(){
//do something
}
2018年04月09日 13点04分
1
内存泄露是指一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束。
1、当页面中元素被移除或替换时,若元素绑定的事件仍没被移除,在IE中不会作出恰当处理,此时要先手工移除事件,不然会存在内存泄露.
<div id="myDiv">
<input type="button" value="Click me" id="myBtn">
</div>
<script type="text/javascript">
var btn = document.getElementById("myBtn");
btn.onclick = function(){
btn.onclick = null;
document.getElementById("myDiv").innerHTML = "Processing...";
}
</script>
2、闭包可以维持函数内局部变量,使其得不到释放,解决之道,将事件处理函数定义在外部,解除闭包
function bindEvent()
{
var obj=document.createElement("XXX");
obj.onclick=onclickHandler;
}
function onclickHandler(){
//do something
}
