簡體   English   中英

5種主流瀏覽器使用哪些垃圾收集算法?

[英]What garbage collection algorithms do all 5 major browsers use?

我目前正在重新思考qooxdoo JavaScript框架的對象處理處理。
看看下圖(A目前在范圍內):

圖http://yuml.me/51747906.jpg

假設我們要刪除B.通常,我們會刪除所有對象之間的所有引用。 這意味着我們在示例中切斷了連接1到5。 這真的有必要嗎?
至於我已經閱讀這里 ,瀏覽器使用的標記-清除算法。 在這種情況下,我們只需要切割參考1(與范圍的連接)和5(與DOM的連接),這可能會更快。
但我可以確定所有瀏覽器都使用標記和掃描算法或類似的東西嗎?

對於任何體面的垃圾收集器(不僅是標記和掃描),切割連接1足以釋放B(以及C和D以及窗口)。 基於引用計數的分配由於其循環引用(B引用D和D引用B)而無法釋放B和D,但引用計數實際上不是垃圾回收。

我認為可以安全地假設所有瀏覽器都使用了一個不錯的垃圾收集器(好吧,對於瀏覽器,沒有什么是真正安全的,但是不使用適當的垃圾收集器的JavaScript實現是不可能的)。

問題在於,在理想的世界中,您基本上只需要斷開DOM節點和本機事件偵聽器。 問題是,qooxdoo中的原始系統是圍繞像IE6這樣的錯誤瀏覽器設計的。 當我們自己刪除時,我們看到大量減少了內存使用量。 然而,在今天的世界中,我會以一種在IE6中可行的方式對其進行重新設計,但未針對其問題進行優化。

完全關閉整個應用程序(處理所有應用程序)以及處理應用程序的單個部分也存在差異。 在最后一個場景中,您需要非常小心地采取行動,不要處理仍然需要的東西。

暫無
暫無

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

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