刷文章看到了ZGC的介紹,感受很牛啊,又看了看文檔,作下記錄java
先看指標,128G的堆,複合模式下的性能,看GC停頓時間併發
ZGC avg: 1.091ms (+/-0.215ms) 95th percentile: 1.380ms 99th percentile: 1.512ms 99.9th percentile: 1.663ms 99.99th percentile: 1.681ms max: 1.681ms G1 avg: 156.806ms (+/-71.126ms) 95th percentile: 316.672ms 99th percentile: 428.095ms 99.9th percentile: 543.846ms 99.99th percentile: 543.846ms max: 543.846ms
嚇人不,使用ZGC居然能夠穩定在2ms之內!app
看看爲啥ZGC能這麼快ide
At a glance, ZGC is a concurrent, single-generation, region-based, NUMA-aware, compacting collector. Stop-the-world phases are limited to root scanning, so GC pause times do not increase with the size of the heap or the live set.性能
前一句都是使用的技術,後一句是主要內容,stw僅限在根掃描的過程當中,因此GC停頓時間並不隨着堆的增大而上升。spa
回憶CMS回收的幾個階段.net
而ZGC經過技術手段把stw的狀況控制在僅有一次,就是第一次的初始標記纔會發生,這樣也就不難理解爲何GC停頓時間不隨着堆增大而上升了,再大我也是經過併發的時間去回收了指針
還有一點須要關注就是停頓時間的減小會不會形成吞吐量的上升?原文解釋code
和G1相比,減小的吞吐量不會超過15%對象
具體使用的什麼手段作到只作一次根掃描就能實現垃圾回收呢
最主要的應該是這兩個技術,惋惜都沒看懂,都開始整彙編代碼了,要否則就是16TB的地址空間,超出個人理解範圍了,之後再研究這兩種技術吧,暫時先記錄下
地址原文:http://openjdk.java.net/jeps/333
PPT:http://cr.openjdk.java.net/~pliden/slides/ZGC-Jfokus-2018.pdf