2012-01-12 61 views
0

可能重复:
jQuery memory leak with DOM removal内存泄漏与jquery删除()?

我创建了一个简单的JavaScript代码段来测试内存泄漏。

function createDom(howmany) 
{ 
    var i; 
    var el; 
    var body = $("body"); 
    for(i=0;i<howmany;i++) 
    { 
     el = $("<div></div>"); 
     el.text(i); 
     el.addClass('element'); 
     body.append(el); 
    } 
} 

$(document).ready(function(){ 

    createDom(10000) 

}); 

当我在Chrome中打开文件时,它使用了大约20mb。当我移动到一个新的网址(about:blank)时,Chrome会清除内存。

问题是,当我执行$(“。element”)。remove()时,Chrome使用更多的内存。更大的问题是即使我更改了URL,内存仍然保留。

我是不是测试不正确?我几乎觉得我应该隐藏所有的元素,而不是将它们删除...

+1

http://stackoverflow.com/questions/1462649/jquery-memory-leak-with-dom-removal – 2012-01-12 12:07:02

+0

@Sudhir //我试过OP的函数(removeWithoutLeak),但我仍然得到相同的结果。 – Moon 2012-01-12 12:15:13

回答

0

想到这可能是一些帮助,所以发布它。 方法remove(),empty()html()检查数据的后代元素并清理它们。这是开销,但至少可以回收内存。尝试使用removeData(),然后使用detach()。希望它能以某种方式提供帮助。

+0

//当我使用原生JavaScript去除这些元素时,内存不会增加,但仍然几乎相同。 “可以回收”是什么意思?我应该调用一个函数来释放内存吗? – Moon 2012-01-12 21:53:43