Java 教程

Java 控制語句

面向物件程式設計

Java 內建類

Java 檔案處理

Java 錯誤和異常

Java 多執行緒

Java 同步

Java 網路程式設計

Java 集合

Java 介面

Java 資料結構

Java 集合演算法

高階 Java

Java 雜項

Java API 和框架

Java 類引用

Java 有用資源

Java - Z 垃圾回收器 (ZGC)



什麼是 ZGC?

ZGC 代表 Z 垃圾回收器。Z 垃圾回收器 (ZGC) 在 Java 11 中作為一種低延遲垃圾回收機制引入。由於開發者社群認為它過於龐大,不適合早期釋出,因此 ZGC 最初在 Java 11 中作為實驗性功能引入。ZGC 確保垃圾回收暫停時間不依賴於堆大小。無論堆大小是 2MB 還是 2GB,它都不會超過 10 毫秒。

但是,與其他 HotSpot VM 垃圾回收器(例如 G1 和 Shenandoah)不同,ZGC 在將未使用的堆記憶體返回給作業系統方面存在侷限性。

Java 15 將 ZGC(Z 垃圾回收器)作為標準功能推出。在 Java 15 之前,它是一個實驗性功能。它是一個低延遲、高度可擴充套件的垃圾回收器。

ZGC 效能卓越,即使在海量資料應用程式(例如機器學習應用程式)中也能高效執行。它確保在由於垃圾回收而處理資料時不會出現長時間暫停。它支援 Linux、Windows 和 MacOS。

Z 垃圾回收器的特性

在 Java 16 中,ZGC 執行緒堆疊處理從安全點轉移到併發階段,並在很大程度上提高了效率。例如,從那時起對垃圾回收進行的增強包括:

  • ZGC 預設情況下將未提交的記憶體返回給作業系統,直到達到最大堆大小。

  • ZGC 可提高效能並減少記憶體佔用。

  • ZGC 現在支援 16 TB 的堆大小,而之前的限制是 4TB。

  • 執行緒堆疊處理從 ZGC 安全點移除。

  • 堆疊處理變得惰性、協作、併發和增量。

  • 所有其他每個執行緒的根處理都從 ZGC 安全點移除。

  • HotSpot 子系統可以延遲處理堆疊。

  • 併發類解除安裝

  • 未用記憶體的釋放

  • 支援類資料共享

  • NUMA 感知

  • 多執行緒堆預觸碰

  • 最大堆大小限制從 4 TB 增加到 16 TB。

使用舊的垃圾回收方式

為了回到 Java 11 的垃圾回收方式,可以使用以下選項:

  • 使用 -XX:-ZUncommit 選項

  • 將 -Xms 和 -Xmx 堆大小設定為相同。

廣告