2008-10-04 25 views

回答

3

一般而言;循环引用是许多问题的原因。 我记得IE 6(不知道它是否适用于7)与XMLHTTP泄漏相当严重...设置onreadystatechange = null一旦它完成修复它。

+0

是问题适用于7.而且,由于它不是一个功能,你需要一个void函数功能(你不能赋予null){}已在全局范围中创建和/或将null分配给保存对xmlhttp对象的引用的变量。 – AnthonyWJones 2008-10-04 14:58:58

22

以下是在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;