书签 分享 收藏 举报 版权申诉 / 9

类型JavaScript内存泄漏.docx

  • 文档编号:3152741
  • 上传时间:2023-05-05
  • 格式:DOCX
  • 页数:9
  • 大小:108.12KB

而在IE7中,貌似为了改善内存泄露,IE7采用了极端的解决方案:

离开页面时回收所有DOM树上的元素,其它一概不管。

但是这不仅没起到任何作用,反而使问题变得更加复杂。

对这类问题,除了自觉一点绕开这些恶心的东西,多用innerHTML这种无用的建议之外。

我想可以通过覆盖document.createElement来略为改善:

首先我们定义一个看不见的元素当作垃圾箱,所有新创建的元素都扔进垃圾箱里,这样保证了所有DOM元素都在DOM树上,IE7就可以正确回收了,另一方面也能避免所谓的”appendChild顺序不对导致内存泄露”。

functionMemoryFix(){

vargarbageBox=document.createElement("div");

garbageBox.style.display="none";

document.body.appendChild(garbageBox);

varcreateElement=document.createElement;

document.createElement=function(){

varobj=Function.prototype.apply.apply(createElement,[document,arguments]);

garbageBox.appendChild(obj);

returnobj;

}

}

3.自动类型装箱转换

别不相信,下面的代码在ie系列中会导致内存泄露

vars=”lalala”;

alert(s.length);

s本身是一个string而非object,它没有length属性,所以当访问length时,JS引擎会自动创建一个临时String对象封装s,而这个对象一定会泄露。

这个bug匪夷所思,所幸解决起来相当容易,记得所有值类型做.运算之前先显式转换一下:

vars="lalala";

alert(newString(s).length);

配套讲稿:

如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

特殊限制:

部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

关 键  词:
JavaScript 内存 泄漏
提示  冰点文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:JavaScript内存泄漏.docx
链接地址:https://www.bingdoc.com/p-3152741.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2


收起
展开