浏览器内存泄露

部分内容引用自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.οnclick=function(){
        alert("hi");
    }
}

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值