浏览器内存泄露

部分内容引用自http://blog.csdn.net/dead_of_winter/article/details/2277673

何为内存泄露

在你的程序运行结束后,无法找到你变量的作用域对象,进而无法清除内存中的变量,这就是内存泄露现象

什么情况会导致浏览器内存泄露

通常来说,以下三种情况可能会导致内存泄露的现象发生:

  • 循环引用
  • 自动类型装箱转换
  • 某些DOM操作

何为循环引用

首先要说,什么是引用呢,如果A对象中的a变量被赋值为对象B时,就说对象A引用了B。
循环引用就是a引用了b,b又引用了c,c又引用了a,形成了一个闭环。比如以下代码:
function A(){
    var a=document.createElement("div");
    a.onclick=function(){
        alert("hi");
    }
}

A();
假设A()执行时创建的作用域对象叫做ScopeA 找到以下引用关系
ScopeA引用DOM对象document.createElement("div");
DOM对象document.createElement("div");
引用函数function(){alert("hi")}函数function(){alert("hi")}引用ScopeA
可以看出,这就是一个循环引用,此代码就会造成内存泄露。
另外两种导致内存泄露的情况我还没有仔细学习~


你可能感兴趣的:(浏览器内存泄露)