IE7内存泄漏的进一步澄清

Further clarification of an IE7 Memory Leak

本文关键字:进一步 内存 泄漏 IE7      更新时间:2023-09-26

我相信我在IE7中遇到了内存泄漏。当用户离开我们的一个页面时,它崩溃了。在进行一些调试时,我发现了下面的一段代码,这似乎是罪魁祸首,因为当我对它进行注释时,该页面运行良好。

$$('.someClass').each(function(item, index) {
    $(item).addEvent('click', function(e) {
        if (e) e.preventDefault();
        // ...
        // MEMORY LEAK??
        var userId = $(item).getElement('a').id.substr(10);
        // ...
    });
});

在这种情况下,您需要打破DOM元素和userId变量之间的循环,对吗?我仍然有点纠结于这个概念。

我正在尝试(我可以假设它是mootools吗?),并且可以确认泄漏。

在each()中做什么并不重要,each(()会造成泄漏。在每次页面加载时,我都会得到2个泄漏,其中1个用于HTML元素,1个用于DIV元素。

DIV不是DOM的一部分(在文档中没有DIV的情况下对其进行了测试),它是由用于测试目的的mootools创建的。当我只使用以下内容时也会发生泄漏:

$$('.someClass').each(function(){}); 

那么我可以建议:不要使用mootools^^


p.S:使用mootools-core-1.4.4-full-compat.js、IE6和sIEve 进行测试

没有内存泄漏。userId只是一个字符串变量,它与任何内容都没有连接。一旦超出范围,浏览器就会对其进行垃圾收集。