是否可以设置可用于 Java VM 的线程/CPU 的数量?

2022-09-01 02:38:30

我想限制 Java VM 可用的线程/进程数,类似于设置可用内存的方式。我希望能够将其指定为仅使用1个线程或任意数字。

注意:我无法在代码中设置它,因为我想限制的代码是一个库,我无法修改源代码。因此,它必须是对虚拟机级别施加的硬上限。(或者,如果您可以对应用程序本身施加可以覆盖库的线程限制?

注意2:这是一个性能测试,以限制我要测试的库,以查看当它可以访问不同数量的CPU/线程时的性能。

谢谢!


答案 1

JVM 中的 CPU 限制问题在 Java 10 中得到了解决,并从内部版本 8u191 向后移植到 Java 8:

-XX:ActiveProcessorCount=2

答案 2

如果你在linux上,只需将启动器包装在numactl / taskset命令中即可。这允许JVM生成任意数量的线程,但将它们安排在固定数量的物理内核上。java

类似的工具也可用于其他操作系统。