有一些随意的想法可以帮助您。
JVM将在内部进行自己的任务调度。有时,如果JVM不认为某个cpu负担过重,它可能会为关键操作保留几个内核。因此,您会看到一些核心正在使用,而另一些则处于空闲状态。
另一种可能性是需要明确设置cpu亲和力。在Unix中,您可以检查与taskset命令一起使用的JVM选择了哪个cpu :
taskset -p <pid>
在Windows中,调出任务管理器,转到“进程”选项卡,右键单击一个进程,然后选择“设置亲和力”。您可以看到已设置使用哪些cpu /内核。
我不知道Java / Tomcat中的启动参数来控制cpu使用率。我认为这应该在操作系统级别。我也不记得曾经阅读过有关编码JVM以限制所使用的cpu /核数的信息。