2011-04-24 120 views
1

什麼觸發JavaScript垃圾回收器運行?很明顯,這是由JS引擎所不同,但試圖得到一個粗略的想法。只有當可用內存低於某個閾值時?JS垃圾回收

謝謝。

回答

2

這真的非常不同廣泛。例如,SpiderMonkey將根據關於已分配多少內存的各種啓發式進行GC,但瀏覽器嵌入也會在各種情況下觸發GC,例如足夠長的DOM事件處理完畢後,腳本運行足夠長時間,在關閉或加載標籤頁/窗口等的情況下執行,等等。所涉及的啓發式在不同的Firefox版本之間發生了巨大的變化,並且會再次發生變化。

而這一切只是一個瀏覽器。

0

這改變每個瀏覽器,據我知道,你有超過它完全沒有控制。

同樣,你有當DOM是越來越變得無法控制,也就是如果你想顯示加載條真煩:d

你爲什麼想知道?

+0

出於好奇。只是爲了更好地理解。 – Steve 2011-04-24 21:18:27

2

它有所不同。 Chrome(V8)僅基於計時器和活動監視器(它在引擎忙時不會運行)。

+0

定時器啓動時,標記和掃描是否同時執行? – Steve 2011-04-24 21:19:34

+1

v8同時運行mark-sweep-compact和scavenge gc,並且它同時運行mark和sweep,有時令人煩惱地導致應用程序暫停。 – 2011-04-25 02:36:48