最近,我开始使用jvm选项来提高性能。当我学习GC选项ParallelGCThreads时,我遇到了一个问题。
我认为ParallelGCThreads的最佳值是我的32核机器上的逻辑processors.But数,默认值是23。从甲骨文垃圾优先垃圾收集器调优中可以看出,处理器计数超过8,ParallelGCThreads的默认值是处理器的5/8。
那么,为什么是5/8而不是8/8呢?
发布于 2018-08-22 12:35:31
这个热点-gc-dev线程暗示,在非常大的CPU或多CPU系统上,额外线程的回报会逐渐减少,因此线性缩放因子会在8个核心以上降低。
这很可能是因为GCing本质上是内存绑定的,并且足够多的线程最终会使内存总线饱和,并且无法提供额外的内核。此外,GC线程之间的协调(工作分区)可能会变得效率更低,因为每个线程只能在堆的较小部分上工作。
无论如何,这不是一个一刀切的规则,所以你可以改变设置,测量它,并保持变化,如果你可以确认改进。
https://stackoverflow.com/questions/51966319
复制相似问题