簡體   English   中英

我需要刪除dom片段還是垃圾收集器會刪除它們?

[英]Do i need to delete dom fragments or will the garbage collector remove them?

這可能有點愚蠢的問題。 我假設垃圾收集器在函數結束執行后處理任何懸空變量,但我想知道這是否也適用於DOM片段。

如果我為此創建一個DOM片段或任何未連接的節點,垃圾收集器會在函數執行完畢后將其刪除嗎?

//would this create a memory leak?
setInterval(function exampleScope() {
    var unusedDiv = document.createElement('div');
}, 10);

我知道這個例子沒用,但它是我擔心的最簡單的模式。 我只是想知道我做的是正確的事情。 我一直在努力構建一個非常高性能的JavaScript游戲引擎Red Redomotive 我不想添加任何內存泄漏。

在事件處理程序中有一個IE 7內存泄漏與DOM元素: jQuery泄漏解決了,但為什么呢?

使用其他瀏覽器你應該沒問題。 請參閱在Javascript中釋放未連接的DOM節點使用的內存

如果您擔心內存泄漏並關心您的技術文盲IE用戶,您應該閱讀: 理解和解決Internet Explorer泄漏模式

好吧,這不是100%的結論,但是我做了一個快速的JSFiddle來試驗這個。 這是一個緊密的循環,使您的代碼運行超過100000000次。 使用Chrome任務管理器,內存使用率從47.9MB躍升至130MB,並且在完成之前保持相當穩定,在那里它降至60MB。

http://jsfiddle.net/u7yPM/

這表明DOM節點肯定是垃圾收集,否則內存使用將在整個測試運行中繼續增加。

編輯:我在Chrome 14上運行了這個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM