11

我最近买了一部 Moto Atrix 2 手机。当我试图查看手机中的处理器规格时,Runtime.getRuntime().availableProcessors() 返回 1。/proc/cpuinfo 也只有处理器 0 的信息。

出于好奇,我在我朋友的三星 Galaxy S2 上进行了同样的检查,它又是一款双核手机。这也表明没有。核心数为 1。

我在我的 Moto xoom 平板电脑中检查了同样的内容,它也是双核的。这次 availableProcessors() 返回 2 并且 cpuinfo 也有处理器 0 和处理器 1 的详细信息。

我很困惑。为什么有些设备携带不同的信息?有人可以解释这个异常吗?

4

2 回答 2

19

Runtime.getRuntime().availableProcessors()只返回在线处理器的数量,所以当第二个内核处于休眠状态时它会返回 1。这样做是为了在资源较少的任务期间保持电力。

要查看所有可用内核,请查看 /sys/devices/system/cpu/

于 2012-04-13T00:19:18.573 回答
0

这将为您提供 Android 上的核心数量(基于这篇文章):

public static int getCoresCount()
    {
    class CpuFilter implements FileFilter
      {
      @Override
      public boolean accept(final File pathname)
        {
        if(Pattern.matches("cpu[0-9]+",pathname.getName()))
          return true;
        return false;
        }
      }
    try
      {
      final File dir=new File("/sys/devices/system/cpu/");
      final File[] files=dir.listFiles(new CpuFilter());
      return files.length;
      }
    catch(final Exception e)
      {
      return Math.max(1,Runtime.getRuntime().availableProcessors());
      }
    }
于 2014-10-08T23:28:32.583 回答