Java 11 在容器中无法获取正确的 CPU 处理器个数

Java JVM About 513 words

现象

使用ForkJoinPool时,发现线程个数始终是1

ForkJoinPool.getCommonPoolParallelism()

使用ManagementFactory时,发现线程个数始终是1

ManagementFactory.getOperatingSystemMXBean().getAvailableProcessors()

使用Runtime时,发现线程个数始终是1

Runtime.getRuntime().availableProcessors()

解决方法

方法一:禁用容器化支持

该方法适用于运行时间不长的任务。

启动时添加JVM参数,不使用容器化支持。

-XX:-UseContainerSupport

方法二:指定 CPU 处理器个数

该方法适用于进程常驻的场景。

使用-XX:ActiveProcessorCount显式的指定处理器个数。

-XX:ActiveProcessorCount=8

方法三:升级到 Java 17

可以考虑升级到下一个LTS版本:Java 17

参考

https://www.toutiao.com/article/7138662425574195750

Views: 754 · Posted: 2023-06-05

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb/LiteNote

扫描下方二维码关注公众号和小程序↓↓↓

扫描下方二维码关注公众号和小程序↓↓↓


Today On History
Browsing Refresh