2012-01-12 62 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