我编写了一个计算量很大的单线程程序,但是当我执行它时,我惊讶地发现我的四核处理器的利用率达到了 95%。我期待看到接近 25% 的利用率(一个核心)。我使用了sysinternals的Process Explorer ,进一步惊讶地发现 Java 进程有六个线程,负载分布几乎相同,约占总处理器时间的 16%。
最初我打算并行化我的代码,但现在看来我不会获得任何性能,因为即使使用我的非并行代码,CPU 已经处于 95% 的负载。
几乎看起来 Java 会以某种方式自动并行化我的代码,但网络上的所有内容都告诉我这不是真的。有谁知道发生了什么?
编辑:我添加了一些屏幕截图,希望能回答以下一些问题:
系统空闲 - 1% 负载。我正在使用具有 8 个逻辑内核的四核 CPU。
我的非并行java程序正在运行。请注意,所有 4 个核心几乎都已用尽:
从 SysInternals Process Explorer 查看我的非并行 Java 程序。注意负载几乎相同的 8 个线程: