Runtime.getRuntime()。availableProcessors()完全返回什么?

时间:2013-12-10 14:40:02

标签: java cpu-cores

我的处理器是英特尔®酷睿™i7-3610QM处理器(6M高速缓存,2.30 GHz),拥有4个处理器内核和8个线程(这应该是什么意思?)。我正在运行一个简单的Java程序来查找“Java虚拟机可用的处理器”的数量。 (来自Oracle,Java 7的API),它为我返回8,而不是4.有人能解释我为什么会这样吗?

这是简单的java代码:

public class MyTest {
    public static void main(String args[]) {
        System.out.println("Number of cores available : " + Runtime.getRuntime().availableProcessors());
    }
}

1 个答案:

答案 0 :(得分:1)

这更像是IMO的硬件问题。

你的处理器是四个物理内核,还有一个叫做“超线程”的东西,这实际上意味着“告诉系统你真的有八个核心,即使你有四个核心。”根据英特尔的说法,与仅将其表示为四核相比,性能提升了10-20%。

您所看到的是操作系统看到的内容:八个内核。从物理上讲,它是四个核心,加上超线程。

您可能希望看到this answer on a similar question,其中说明:

  

处理器的数量基本上是执行引擎的数量   能够运行你的代码。其中一个i5变种是4核CPU,   i5-7系列。这些可能是物理上不同的处理器(甚至   虽然它们存在于同一芯片内)或者它们可能是合乎逻辑的   您使用超线程时的处理器。