我知道停止世界,增量,並行,併發,(軟/硬)實時垃圾收集器的概念。但我無法理解大部分併發的 GC。與併發GC不同嗎?有什麼不同?爲什麼它叫居多?什麼是'大多數併發垃圾收集器'?
回答
我知道停止世界,增量,並行,併發,(軟/硬)實時垃圾收集器的概念。但我無法理解大多數併發的GC。與併發GC不同嗎?有什麼不同?爲什麼它被稱爲主要?
像許多其他主題一樣,垃圾收集籠罩在術語模糊的霧中。伯姆以非常規方式使用傳統術語尤其臭名昭着,但我們應該原諒他,因爲他在傳統意義尚未僵化的時代開創了這一領域! :-)
據我所知,stop-the-world GC指的是在整個GC循環週期中暫停所有增變器線程的算法,例如,標記整個堆時。例如,.NET Server GC執行此操作並因此導致300ms的停頓時間。增量GC在每個小GC週期執行一點主GC工作,例如, OCaml GC中的「主要切片」。並行意味着GC使用多個線程來加速收集垃圾的過程。同時的GC意味着GC與增變器同時運行,例如, .NET工作站GC。實時很難定義,最初意味着有限的最大暫停時間,但現在也意味着最小的增變器利用率(MMU),以避免GC永遠不會暫停增變器而永遠不允許其運行的GC的病態問題!根據理查德瓊斯的新書,一個即時GC從不會暫停一個以上的增變器(即沒有停止世界的階段),儘管我懷疑他的意思是增變器彼此獨立地被暫停。最後,大多數併發GC是同時掛起所有增變線程的GC,但只能在短時間內暫停,而不能用於任意長的GC週期。因此,允許mutators在GC運行時大部分時間自由運行,因此它被稱爲「基本併發」GC。
「大多數併發」的分類非常重要,因爲大多數(所有?)主要GC都屬於這一類,因爲它提供了暫停時間和吞吐量之間的良好折衷。例如,.NET工作站GC在拍攝全局根的快照時掛起所有的增變線程,但在標記和掃描時恢復它們。
您可以在Bohem,Demers和Shenker的文章"Mostly Parallel Garbage Collection"(Proceedings of the ACM SIGPLAN '91 Conference on Programming Language Design and Implementation,SIGPLAN Notices 26,6(1991年6月),第157頁-164)。
他們寫道:
假設我們能夠保持一組虛擬髒位,這是 每當虛擬內存 的相應頁面寫入自動設置的。 (通過對頁面進行寫保護並捕獲得到的寫入 錯誤,可以接受的此功能的實現可以是 ,而不需要修改底層的操作系統內核;在操作系統內核中執行 當然會更有效。) 爲停止世界操作而定義的任何追蹤收集器, 考慮以下收集算法。在 集合的開頭,清除所有虛擬髒位。與mutator並行執行傳統的 跟蹤操作。虛擬髒位 將被更新以反映增變器寫入。完成跟蹤 後,停止世界並跟蹤位於 髒頁上的所有標記對象。 (寄存器被認爲是髒的。)在這一點上,所有可訪問的對象都被標記,垃圾可以安全地回收。
...
在該算法中,平行跟蹤相位提供 近似真正到達集。這個平行跟蹤過程中沒有標記的唯一對象確實可以訪問,必須是 ,這些對象可以從跟蹤的 以後寫入的標記對象中獲得。來自所有這些對象的停止世界追蹤階段跟蹤,因此最終沒有真正可達的對象保持未標記。
當它們是指tracing garbage collectors,它們指的是從命名爲「根節點」(通常該程序的寄存器)開始,並按照指針每個可到達的對象收集器。無法訪問的東西是垃圾。
簡而言之,大多數並行收集器並行執行大量工作,然後暫停程序的執行,以糾正程序在收集器運行時所做的任何更改。因此,它「大部分是平行的」。
- 1. 什麼觸發java垃圾收集器
- 2. 什麼是垃圾收集器?
- 3. 什麼觸發垃圾收集
- 4. 併發垃圾收集的好處是什麼?
- 5. Java:什麼是垃圾收集器收集?
- 6. 爲什麼這是垃圾收集
- 7. 垃圾收集器
- 8. AS3:垃圾收集太大?
- 9. 如何關閉併發垃圾收集?
- 10. 垃圾收集器在收集死對象時會做什麼?
- 11. 垃圾收集器如何確定對象是否是垃圾?
- 12. 垃圾收集
- 13. Java垃圾回收:什麼是並行收集器中的虛擬空間?
- 14. 找出什麼對象垃圾收集器正在發佈:
- 15. 爲什麼FastBitmap無法收集垃圾?
- 16. PHP:垃圾收集器有多好?
- 17. Renderscript和垃圾收集器
- 18. 垃圾收集器閃存
- 19. 垃圾收集器asp.net
- 20. Node.js的垃圾收集器
- 21. 垃圾收集器vs池
- 22. .NET垃圾收集器
- 23. 垃圾收集器Flash Player
- 24. Jruby,垃圾收集器,Redis
- 25. SpiderMonkey垃圾收集器
- 26. 垃圾收集是由
- 27. 活物是垃圾收集?
- 28. 守護線程垃圾收集器的父線程是什麼?
- 29. 垃圾收集器是否有配置?
- 30. 垃圾回收器什麼時候會收集一個Singleton?