ZGC, A Scalable Low-Latency Garbage Collector(Experimental)
可伸縮,低延遲的gc
ZGC, 這應該是JDK11最為矚目的特性, 沒有之一. 但是后面帶了Experimental, 說明這還不建議用到生產環境.
GC暫停時間不會超過10ms
既能處理幾百兆的小堆, 也能處理幾個T的大堆(OMG)
和G1相比, 應用吞吐能力不會下降超過15%
為未來的GC功能和利用colord指針以及Load barriers優化奠定基礎
初始只支持64位系統
ZGC的設計目標是:支持TB級內存容量,暫停時間低(<10ms),對整個程序吞吐量的影響小於15%。 將來還可以擴展實現機制,以支持不少令人興奮的功能,例如多層堆(即熱對象置於DRAM和冷對象置於NVMe閃存),或壓縮堆。
GC是java主要優勢之一. 然而, 當GC停頓太長, 就會開始影響應用的響應時間.消除或者減少GC停頓時長, java將對更廣泛的應用場景是一個更有吸引力的平台. 此外, 現代系統中可用內存不斷增長,用戶和程序員希望JVM能夠以高效的方式充分利用這些內存, 並且無需長時間的GC暫停時間.
STW – stop the world
ZGC是一個並發, 基於region, 壓縮型的垃圾收集器, 只有root掃描階段會STW, 因此GC停頓時間不會隨着堆的增長和存活對象的增長而變長.
ZGC : avg 1.091ms max:1.681
G1 : avg 156.806 max:543.846
用法 : -XX:+UnlockExperimentalVMOptions –XX:+UseZGC, 因為ZGC還處於實驗階段, 所以需要通過JVM參數來解鎖這個特性