首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

Javascript 内存泄漏解决思路

2012-04-20 
Javascript 内存泄漏请问为什么会内存泄漏?scriptdocument.onclickfunction(){}document.getElementBy

Javascript 内存泄漏
请问为什么会内存泄漏?

<script> 
document.onclick=function(){};  
document.getElementById("a").doc=document;
</script>

[解决办法]
document.getElementById("a").doc=document;
document被引用后没有没有被浏览器回收
[解决办法]
"These memory leaks often occur as a result of circular references between JavaScript objects and objects within IE’s DOM (document object model)." GPDE Team Blog

<script>
document.onclick=function(){}; //dom reference the javascript object
document.getElementById("a").doc=document; //dom reference dom
</script>

按照GPDE TEAM的说法,上面两句应该不会造成泄漏。
[解决办法]
和winter讨论了一下,document.onclick=function(){}这句确实产生了循环引用!请参见:

如何避免Javascript事件绑定出现内存泄漏 http://www.w3cgroup.com/article.asp?id=207
[解决办法]
典型的“循环引用”。

脚本引擎对象会维持对DOM对象的引用,并在清理和释放DOM对象指针前等待所有引用的移除。

解决办法:在页面关闭前document.getElementById("a").doc = null;取消document的引用。

热点排行