[英]How is garbage collection triggered in JavaScript?
考慮下面的JavaScript代碼。 我正在創建由4個元素組成的數組,然后立即刪除對其的引用。 什么時候進行垃圾收集? 我知道它特定於語言實現,但是我們沒有那么多JavaScript引擎。
編輯:這是最簡單的情況,但我很感興趣,因為垃圾回收在某些Web音頻應用程序中會引起可聞的故障。
var a = [1, 2, 3, 4];
a = null;
// other code
更新: Javascript和垃圾收集不解釋事件的順序及其觸發方式。 我不想控制垃圾收集。 我需要更好的理解來設計更好的代碼。
這是刪除不再使用的對象的引用的好方法。 許多(幾乎所有)javascript引擎都使用標記和掃描方法。 如果要刪除對某個對象的引用,並且該對象沒有其他引用,則可能會在下一個“標記和掃描周期”中收集該對象。
垃圾收集是一種循環方法,在少數發動機中會定期發生。 一些引擎表示他們以有效的方式進行GC,但是沒有有效的文檔。
可以通過多種方式觸發GC
我目前可能還想到其他原因。 通常,您不應該擔心自己。
如果要保持較低的GC,則需要保持較低的對象分配率。 例如,某些算法可以從在其上執行工作的預分配緩沖區中受益。 該策略的有效性取決於javascript運行時是否進行轉義分析,以及它在避免短命分配方面的有效性。 以及收集者是否世代相傳。 一代代的收藏家遭受快速,短暫的分配的痛苦要小得多。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.