【问题标题】:Runtime.getRuntime().availableProcessors()Runtime.getRuntime().availableProcessors()
【发布时间】:2012-08-06 08:32:18
【问题描述】:

我正在尝试检查程序的性能。我参考这篇文章get OS-level system information。当Runtime.availableProcessors() 执行时,我得到4 的答案。我读了availableProcessors(),但它告诉这个方法返回处理器的数量

  1. 谁能解释一下处理器数量是什么意思?
  2. 为什么结果是 4?

我使用的是 Windows 7 core i5 4gp。

【问题讨论】:

  • 你有四核处理器的机器吗?
  • 还是带有超线程的双核?
  • 并非所有 i3、i5 或 i7 都相同。 i3 可以有一个或两个内核,带或不带超线程。 i7 可以有 4 个或 6 个内核。在英特尔网站上查找您的确切型号可能会很有用。这是一个例子。 ark.intel.com/products/52210/…注意有多少选项!

标签: java windows performance runtime


【解决方案1】:

如您所读,availableProcessors() 是一个返回number of processors available to the JVM 的方法。 4 表示当前可用于 JVM 的处理器数量。

这些行在 Windows 和其他操作系统中返回 number of logical cores

在具有支持超线程四核Core i7的计算机上,它将返回8

在具有四核 Q6700 的计算机上,此方法将返回 4

【讨论】:

    【解决方案2】:

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

    请参阅http://en.wikipedia.org/wiki/Intel_Core#Core_i5http://en.wikipedia.org/wiki/Hyper-threading 了解更多详情。

    【讨论】:

      【解决方案3】:

      您有一个multi-core processor(在您的情况下,它看起来像是Lynnfield)。就信息而言,每个内核都算作一个单独的 CPU(一个单独的处理器),因为每个内核都可以与其他内核同时执行指令。

      【讨论】:

        【解决方案4】:

        它没有提供可用于 jvm 进程的内核。如果启用超线程,它可能会比实际更大。

        【讨论】:

        • 我的意思是核心,核心是可以并行执行任务的独立cpu,
        【解决方案5】:

        在此上下文中,“处理器”是“能够独立执行的硬件”,即 cpu 核心

        这不是“处理器包”——您购买的单个硬件单元(实际上是一个包中的 4 个独立 CPU)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-11-22
          • 2019-08-30
          • 1970-01-01
          • 1970-01-01
          • 2011-01-09
          相关资源
          最近更新 更多