据我所知,我们可以使用Java中的并行流或线程轻松利用所有可用的CPU内核。
但是,假设我的桌面有两个物理 CPU(是的,我的意思是CPU不是核心),JVM是否会同时使用它们(考虑到它们当然可用),就像它一样与CPU核心有关吗?
谢谢!
答案 0 :(得分:4)
JVM只是一个规范:
...省略了对确保互操作性不重要的实现细节:运行时数据区的内存布局,使用的垃圾收集算法以及Java虚拟机指令的任何内部优化(它们转换为机器代码) )
它将是另一个实现细节如何使用物理硬件。我可以编写自己的JVM实现,只使用一个CPU,或者我可以编写一个使用多个CPU的实现。
除了Pedantry之外,我认为所有商业JVM都会看到多个CPU与多个核心完全相同,因为它们通常运行在操作系统之上,这也抽象出有关CPU和核心(包括虚拟核心)的硬件细节。将它们全部作为CPU运行到运行在该操作系统之上的软件。