![](/img/trans.png)
[英]Do I have to delete the node or the garbage collector does the work in JS?
[英]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。
這表明DOM節點肯定是垃圾收集,否則內存使用將在整個測試運行中繼續增加。
編輯:我在Chrome 14上運行了這個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.