我编写了一个非常简单的单线程 java 应用程序,它简单地迭代(几次) Integer:s 列表并计算总和。当我在我的 Linux 机器(Intel X5677 3.46GHz 四核)上运行它时,程序大约需要 5 秒才能完成。同时,如果我使用任务集将 jvm 限制为两个特定的内核(这是完全可以预料的,因为应用程序是单线程的,并且所有内核上的 cpu 负载<0.1%)。但是,当我将 jvm 限制为单核时,程序突然执行异常缓慢,需要 350 多秒才能完成。我可以理解,当 jvm 除了主线程之外还运行其他几个线程时,它是否只是在限制为单个内核时稍微慢一些,但我无法理解这种极端差异。我在一台单核的旧笔记本电脑上运行相同的程序,它在大约 15 秒内执行。有谁知道这里发生了什么,或者有没有人成功地将 jvm 限制为多核系统上的单核而没有遇到类似的事情?顺便说一句,我用热点 1.6.0_26-b03 和 1.7.0-b147 都试过了——同样的问题。
非常感谢