JDK 18三個垃圾回收G1/Parallel/Serial GC的改進提升點

banq發表於2022-03-17

整個 Hotspot GC 子元件的完整更改列表在這裡,總共有 300 個更改。
 
通用改進
  • 所有 OpenJDK 垃圾收集器Parallel GC、Serial GC和ZGC 現在都支援字串重複資料刪除:-XX:+UseStringDeduplication使用該選項啟用。
  • -XX:GCCardSizeInBytes:更改此值會對暫停時間長度產生重大影響。用來配置 card table card size,詳細這裡

 
下面是三者各自的改進點:

G1 GC

  • 記憶集重寫大量減少了 G1 本機記憶體消耗,無需任何成本。它顯著減少了記憶集的本機記憶體佔用。
  • 取消了以前由某些內部資料結構強加的 32MB 區域大小限制。目前最大堆區域大小已設定為 512MB,但可能更大。
  • 在某些情況下,當 Java 應用程式即將退出時,G1 等待活動併發標記的完成以實際退出。這可能會導致很長的延遲,具體取決於該任務的複雜性。JDK 18 修復了這個問題,“立即”退出 VM。
  • 修復了JDK 14中引入的一個有趣的效能迴歸:在尋找對要收集的區域的引用時,疏散工作最初沒有很好地分佈。在較大的機器上,這暴露了工作竊取機制中的問題,導致停頓時間過長。
  • 更新了垃圾收集調優指南以反映 JDK 18 的 G1 的當前狀態,改進了各個部分。


Serial GC:
  • 序列 GC增加了對歸檔堆物件的支援。這可以顯著減少啟動時間。

相關文章