Parallel GC 靠多线程并行回收追求吞吐。线程数到底有多大影响、吞吐真的比 G1 高吗、它的默认目标是什么?这篇用同一个存活集不断被替换的负载把这些量出来(G1 与 ZGC 的内部见前面的篇目)。
ParallelGCThreads GC 次数 停顿中位数(ms) 最大(ms) 总停顿(ms) 循环完成数
1 49 69.0 338.3 4398 199950
2 69 43.5 181.2 3609 289246
4 85 25.8 138.5 2965 363934
8 89 22.2 125.2 2808 382856回收器 循环完成数 GC 次数 停顿中位数(ms) 最大(ms) 总停顿(ms) 停顿占比 Parallel 395987 80 23.8 123.1 2704 45.1% G1 456530 114 12.5 99.6 2019 33.6% Serial 196885 24 182.3 465.3 4630 77.2%
GCTimeRatio = 99 InitialSurvivorRatio = 8 MaxGCMinorPauseMillis = 18446744073709551615 MaxGCPauseMillis = 18446744073709551614 NewRatio = 2 ParallelGCThreads = 9 SurvivorRatio = 8 UseAdaptiveSizePolicy = true