page contents

开发过程中遇到的内存泄露情况,如何解决的?

轩辕小不懂 发布于 2021-12-23 13:37
阅读 482
收藏 0
分类:WEB前端开发
2717
Nen
Nen
- 程序员

1、定义和用法:

内存泄露是指一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束。C#和Java等语

发生内存泄露。我们知道,浏览器中也是采用自动垃圾回收方法管理内存,但由于浏览器垃圾回

2、内存泄露的几种情况:

(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(){
 document.getElementById("myDiv").innerHTML = "Processing...";
 }
</script>
解决方法如下:
<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=function(){
 //Even if it's a empty function
 }
}
解决方法如下:
function bindEvent(){
 var obj=document.createElement("XXX");
 obj.onclick=function(){
 //Even if it's a empty function
 }
 obj=null;
}

请先 登录 后评论