G1的ParallelGCThreads

时间:2018-08-22 11:55:53

标签: java garbage-collection g1gc

最近,我正在打开jvm选项以提高性能。 当我学习了GC选项ParallelGCThreads时,我遇到了问题。
我认为,ParallelGCThreads的最佳值是逻辑处理器的数量。但是,在我的32核计算机上,默认值是23。从oracle的文章Garbage First Garbage Collector Tuning可以看出,进程数大于8 ,ParallelGCThreads的默认值为处理器的5/8。
那么,为什么是5/8而不是8/8?

1 个答案:

答案 0 :(得分:5)

This hotspot-gc-dev thread暗示在非常大的CPU或多CPU系统上,您从其他线程获得的收益逐渐减少,因此线性缩放因子降低到8个内核以上。

这可能是因为GCing本质上是受内存限制的,并且足够多的线程最终将使内存总线饱和,并且无法提供其他内核。另外,GC线程之间的协调(工作分区)可能会变得效率更低,因为每个线程只能在较小的堆中工作。

无论如何,这不是万能的规则,因此您可以更改设置,对其进行测量并在可以确认改进的情况下保留更改。