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
。
参考
Views: 1,280 · Posted: 2023-06-05
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...