Java:JVM可用的核心?

Jon*_*nas 6 java jvm core processors

在Java中,有的方法Runtime.getRuntime().availableProcessors()有以下Javadoc:

返回Java虚拟机可用的处理器数.在特定的虚拟机调用期间,此值可能会更改.

价值如何实际改变?在什么情况下,JVM可用的处理器比物理安装的处理器少?

乔纳斯

sar*_*old 11

Linux命令taskset(1)可用于强制进程使用特定CPU或特定CPU集; 修改正在运行的程序以强制它到一个或多个处理器非常容易.例如,

taskset -p `pidof java` --cpu-list 0,5,7,9-11
Run Code Online (Sandbox Code Playgroud)


Jes*_*mos 5

在Windows中,可以通过一些简单的属性更改允许应用程序使用的核心数.在虚拟化环境中,您还可以将核心限制为VM,以便只看到VM看到的核心.在Linux/Unix中,您可以设置核心关联,以便应用程序或用户无法使用所有核心,因此您可能安装的核心数多于JVM可见的核心数.

注意:这对于运行多个作业的计算机非常有用,在这些作业中,您不希望出现高资源争用,并且您希望提供不足(或甚至过度配置)资源.