关于ie中jscript的内存泄漏

213 篇文章 0 订阅
192 篇文章 0 订阅

关注这个问题有一阵子了。网上找找,Douglas Crockford 的文章《JScript Memory Leaks》有详细说明,鸟食轩也有一系列相关文章。

以下是对《JScript Memory Leaks》一文的节选翻译,大致说明了ie内存泄漏的原因。

“microsoft的ie浏览器有许多内存泄漏问题,最严重的就是使用jscript交互引发。当dom节点包含了一个对javascript对象(如事件处理函数onclick)的引用,同时该javascript对象也引用此节点时(如鼠标单击时隐藏节点),就形成了一个循环结构。它本身没有问题——当对dom节点和事件处理函数的引用消失,garbage collector(一个自动的内存资源管理器)会回收它们,使它们占用的空间再分配。javascript的garbage collector理解循环,不会产生问题。不幸的是,ie的dom不归jscript管。ie有自己的内存管理器却不理解循环,因此产生混乱。结果,当循环出现,却没有内存回收,没被回收的内存就泄漏了。时间长了,就会导致内存不足,当内存空间涨满,浏览器就死了。”

注:“javascript”指的是语言本身,“jscript”是microsoft的类似javascript脚本语言。

Crockford 建议的解决方法是:在删除含有对javascript对象引用的dom节点之前,把属性中类型为function的全部清除(设为null)。我试过,确实有效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值