ParallelRefrocenable -ProceNabled默认线程数



当选项-xx: parallelleRefproprocenabled时,JVM分配的默认线程是多少?有什么方法可以控制参考过程的线程数量?如果是,这样做的参数是什么?

ParallelGCThreads控制所有停止 - 世界GC阶段的并行性,其中应包括并行参考处理。

它的默认值是根据当前计算机计算的,您可以通过

看到它
java -XX:+Use????GC -XX:+PrintFlagsFinal | grep ParallelGCThreads

(填写您使用的GC,默认值可能会有所不同)

请注意,GC参考处理与最终确定或Cleaner执行不同,该执行发生在GC暂停之外。

此开放式JDK版本的第一行注释[1]说:

默认情况下,G1现在确定线程的最佳数量

发行笔记没有说明如何更改它。因此,为了回答您的问题,使用时G1计算了使用的默认线程数量。

它也说

变化改善了垃圾收集的这一阶段,在机器上大大暂停了,其中一个以上可用于垃圾收集。

...尽管它没有说明它如何确定可用线程的计数。

链接[2]提供了更多的具体细节,并将其引用为"线程的动态数量"大小这也表明,动态分配有时受到限制以避免以前的实现中的放缓:

线程默认情况下会自动受到功能的限制使用JDK-8043575引入,以避免实际上比以前更慢如果使用太多线程。

[1] https://bugs.openjdk.org/browse/jdk--8205328[2] https://mail.openjdk.org/pipermail/hotspot-gc-dev/2018-----------------6.html

最新更新