ZGC now has O(1) pause times
(malloc.se)
IngramChen
積分 3
ZGC 犧牲 throughput 換來 latency 的改進。
原本的 GC 多半是世代制的,每次 GC 都是批次處理一整個世代的垃圾,這種做法直覺上就是平常時速度超快,可以吃下大量的物件,但一開始回收就會停頓。
ZGC 就是不分世代了,然後每次物件生成都會做標記和檢查。因為不是批次做回收所以不會有停頓,但代價就是每個物件生成都要多做一些事,直覺上就是整體會變慢,CPU 吃比較多。
說穿了都是 trade-off。