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

所属分类: 软件教程 / 浏览下载 阅读数: 1548
收藏 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 分享

千影浏览器怎么开启Cookie?

千影浏览器怎么开启Cookie?千影浏览器打开网页的时候,会出现页面拦截并提示需要卡其cookie,该怎么开启cookie呢?下面我们就来看看详细的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

迅雷下载时提示“任务出错”怎么办?(附多种解决方法)

很多朋友在使用迅雷下载文件时提示“任务出错”这种情况,怎么解决呢?下面小编给大家带来迅雷下载时提示“任务出错”的多种解决方法,一起来看吧
收藏 0 赞 0 分享

迅雷9.1.27正式版更新了什么内容?

迅雷9.1.27正式版正式上线,详细版本号升级为9.1.27.648,而对于这个版本来讲,很多小伙伴是期待它的到来。那么迅雷9.1.27正式版更新了什么内容?下面就为大家详细介绍一下,来看看吧
收藏 0 赞 0 分享

千影浏览器怎么删除扩展应用?

千影浏览器怎么删除扩展应用?千影浏览器右上角有一个扩展应用的快捷方式,想要删除,该怎么设置呢?下面我们就来看看详细的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

千影浏览器怎么设置关闭窗口时多个标签提示?

千影浏览器怎么设置关闭窗口时多个标签提示?千影浏览器打开了很多页面,但是不小心全关了,想要设置在关闭多个页面的时候有提示,该怎么设置呢?下面我们就来看看详细的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

QQ浏览器9.5.4正式版更新发布:性能更加稳定

QQ浏览器是腾讯公司推出的新一代浏览器,采用全新架构并针对IE内核做了全面优化,一周前,QQ浏览器9.5.4正式版更新发布,更新日志与测试版一致,但性能更加稳定,我们来看看吧
收藏 0 赞 0 分享

傲游浏览器5.0.2.2正式发布:修复个别小语种翻译(附下载)

傲游浏览器用了傲游自主研发的全球首款双核引擎,具备高效的浏览速度及稳定性,使浏览网页更加流畅,日前,傲游浏览器5.0.2.2正式发布,修复个别小语种翻译问题,一起来看看吧
收藏 0 赞 0 分享

Mac平台全新傲游MX5浏览器测试版发布 附下载安装步骤

傲游在时隔四年之久后终于推出了新产品——傲游5 MX5,它主打的是未来浏览器的概念,昨日,Mac平台全新傲游MX5浏览器测试版发布,版本号为5.0.14.58,下面小编就为大家介绍全新功能以及下载安装步骤,来看看吧
收藏 0 赞 0 分享

FileZilla/FlashFXP使用二进制上传文件的设置方法

FileZilla是一个快速免费跨平台的FTP软件,实用多功能和界面直观的FTP客户端。下面小编给大家分享下FileZilla/FlashFXP使用二进制上传文件的设置方法,需要的朋友参考下
收藏 0 赞 0 分享
查看更多