IE6内存泄露的另类解决方法

所属分类: 软件教程 / 浏览下载 阅读数: 1516
收藏 0 赞 0 分享

Hedger Wang 在国内 blog 上得到的方法:使用 try … finally 结构来使对象最终为 null ,以阻止内存泄露。
其中举了个例子:
function createButton() {
var obj = document.createElement("button");
obj.innerHTML = "click me";
obj.onclick = function() {
//handle onclick
}
obj.onmouseover = function() {
//handle onmouseover
}
return obj;//return a object which has memory leak problem in IE6
}
var dButton = document.getElementById("d1").appendChild(createButton());
//skipped....
对于 IE6 中,引起内存泄露的原因,可看《Understanding and Solving Internet Explorer Leak Patterns》一文。
上面的例子,应该属于上文中的 “Closures”原因。

再看下用 try … finally 的解决方法:
/**
* Use the try ... finally statement to resolve the memory leak issue
*/
function createButton() {
var obj = document.createElement("button");
obj.innerHTML = "click me";
obj.onclick = function() {
//handle onclick
}
obj.onmouseover = function() {
//handle onmouseover
}
//this helps to fix the memory leak issue
try {
return obj;
} finally {
obj = null;
}
}
var dButton = document.getElementById("d1").appendChild(createButton());
//skipped....
可能大家有疑问: finally 是如何解析的呢?
答案是:先执行 try 语句再执行 finally 语句。
例如:
function foo() {
var x = 0;
try {
return print("call return " ( x));
} finally {
print("call finally " ( x));
}
}
print('before');
print(foo());
print('after');
返回的结果为:
print » before
print » call return 1
print » call finally 2
print » true
print » after
更多详细的演示:
《Finally, the alternative fix for IE6’s memory leak is available》
相关的一些讨论:
《Is “finally” the answer to all IE6 memory leak issues?》
更多精彩内容其他人还在看

谷歌浏览器怎么屏蔽广告?谷歌浏览器广告屏蔽插件使用方法图解

目前,基本上所有的网页上都有广告,有时候我们会因为网页上的广告导致电脑死机或因为有些广告挡住了重要的信息,那么,谷歌浏览器怎么屏蔽广告呢?针对此问题,本文就为大家图解谷歌浏览器屏蔽广告插件的使用方法
收藏 0 赞 0 分享

猎豹浏览器怎么下载视频文件?使用猎豹浏览器下载网页视频方法图解

猎豹浏览器是一款非常好用的浏览器之一,相信有很多朋友都在使用猎豹浏览器,那么,大家知不知道猎豹浏览器怎么下载视频?针对猎豹浏览器下载视频的问题,本文就为大家图解使用猎豹浏览器下载网页视频的方法
收藏 0 赞 0 分享

百度浏览器截图教程不需要第三方的截图工具

百度浏览器我个人感觉是一款当前市面众多浏览器当中最好用的一款,今天笔者就来分享给大家怎么来利用百度浏览器截图,感兴趣的朋友可以看看
收藏 0 赞 0 分享

怎么去掉迅雷7下载完文件后自动打开下载好的文件?

怎么去掉迅雷7下载完文件后自动打开下载好的文件?迅雷7下载完文件后,会自动将下载好的文件打开。如果下载很多文件,会打开非常多的文件,关闭非常麻烦,下面分享解决办法,需要的朋友可以参考下
收藏 0 赞 0 分享

百度浏览器怎么清除缓存提升使用速度

浏览器有缓存的话,会导致我们干什么事情都有滞缓,可以把自己的浏览器的缓存给清除干净就可能了
收藏 0 赞 0 分享

优酷网页打不开了怎么办?解决IE打不开优酷首页的办法

优酷网页打不开了怎么办?优酷首页打不开,用IE无法显示但是用谷歌浏览器没问题。试过很多方法都不行,最后摸索出了解决方法,下面分享解决IE打不开优酷首页的办法,需要的朋友可以参考下
收藏 0 赞 0 分享

云帆影视浏览器怎么卸载删除?云帆影视浏览器卸载教程

云帆影视浏览器是一款由快播公司研发的影视浏览播放器工具,虽说云帆影视浏览器很好用,但是由于经常被捆绑在其他软件里面,很是让用户反感。那么云帆影视浏览器怎么卸载呢?小编整理了一份卸载教程给大家
收藏 0 赞 0 分享

火狐浏览器怎么设置自动刷新?火狐浏览器自动刷新功能使用方法

火狐浏览器是一款非常好用的开源浏览器工具,很多朋友们都喜欢使用这款浏览器,火狐浏览器有一个自动刷新插件,针对不知道火狐浏览器怎么设置自动刷新的朋友们,本文就为大家介绍火狐浏览器自动刷新组件的使用方法
收藏 0 赞 0 分享

火狐浏览器怎么收藏网页?使用火狐浏览器收藏网页方法介绍

火狐浏览器是一款非常好用的开源浏览器工具,很多朋友们都喜欢使用这款浏览器,那么,我们在使用火狐浏览器的过程中,如何收藏网页呢?针对此问题,本文就为大家介绍一个火狐浏览器收藏网页的方法,有兴趣的朋友们可以了解下
收藏 0 赞 0 分享

QQ浏览器8.0.2beta更新了哪些功能

QQ浏览器8.0.2beta版本为大家打造更好的版本,众所周知,QQ浏览器8.0版本是腾讯尝试的最大一次更新,因此在浏览器8.0版本上一直在不断的更新,想吸纳用户的宝贵经验,并加以改进,此次更新新增了书签侧栏的最常访问功能并优化了安装速度等
收藏 0 赞 0 分享
查看更多