你知道什么可能导致JavaScript中的内存泄漏吗?我对浏览器感兴趣:IE 7,FireFox 3,Safari 3
有一篇关于JavaScript和内存泄漏的好文章.它没有具体涉及浏览器,而是描述了内存泄漏和JavaScript的整个问题.
JavaScript和内存泄漏
介绍关闭
更多泄漏模式
结论
我认为这是一种更好的方法,可以在为公众开发网站时尽可能地针对少数浏览器进行优化.
以下是IE中的经典内存泄漏: -
function body_onload() { var elem = document.getElementById('someElementId'); // do stuff with elem elem.onclick = function() { //Some code that doesn't need the elem variable } }
在运行此代码之后,存在循环引用,因为元素具有指定其onclick事件的函数,该事件引用范围对象,该范围对象又保持对元素的引用.
someElement-> onclick->功能scope-> elem-> someElement
在IE中,DOM元素是基于COM的引用计数对象,Javascript GC无法清除.
在上面的代码中添加最后一行将清理它: -
var elem = null;