JDK 18 GC垃圾回收機制比較

banq發表於2022-06-12

從 JDK 18 開始,JDK 附帶了四個垃圾收集器 (GC);序列 GC、並行 GC、G1 GC 和 ZGC。在大多數情況下,預設的 GC G1 GC 將是最佳選擇。但是,瞭解 GC 的設計目標可能會有所幫助,並且可能會幫助您實現應用程式的效能目標。本文將對每個 GC 以及何時應該使用它們進行高階研究。

序列垃圾收集器
Serial GC 是 GC 中“最簡單的”。它在單個執行緒上執行所有工作,因此它被命名為“序列”。
Serial GC 最適合在資源有限且 live set 不超過 100 MB 的環境中執行的應用程式。
可以使用 VM 標誌啟用序列 GC -XX:+UseSerialGC:.

並行垃圾收集器
Parallel GC 在架構上類似於 Serial GC,但在執行其工作時可以使用多個執行緒。
並行 GC 旨在最大限度地提高吞吐量。因此,吞吐量是最高優先順序的應用程式,即使以更長的暫停時間為代價,也是理想的用例。
可以使用 VM 標誌啟用並行 GC -XX:+UseParallelGC:.

G1 垃圾收集器
Garbage-First, (G1) GC 被指定為 JDK 9 1的預設 GC 。G1 GC 主要是併發 GC,這意味著它可以在應用程式執行時執行工作。
G1 GC 試圖在延遲和吞吐量之間取得平衡,並且可以從資源最少的環境擴充套件到具有大量資源的環境。
G1 GC 是預設 GC,但可以使用 VM 標誌顯式啟用:-XX:+UseG1GC.

Z 垃圾收集器
最新的 GC ZGC 作為 JDK 15 中的生產特性引入。ZGC 也是併發 GC。
ZGC 專注於低延遲,暫停時間很少超過 250 微秒,並且可以將堆大小從 8MB 擴充套件到 16TB。
可以使用 VM 標誌啟用 ZGC -XX:+UseZGC:

JDK 18 GC垃圾回收機制比較

相關文章