availableProcessors()为双核手机返回1

时间:2012-04-13 00:07:05

标签: java android performance processors

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

出于好奇,我在朋友的三星Galaxy S2中检查了同样的信息,这也是一款双核手机。这也表明没有。核心是1。

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

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

2 个答案:

答案 0 :(得分:18)

Runtime.getRuntime().availableProcessors()仅返回在线处理器的数量,因此当第二个核心处于休眠状态时,它将返回1。这样做是为了在资源消耗较少的任务中保持功率。

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

答案 1 :(得分:0)

这将为您提供Android上的核心数量(基于this post):

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());
      }
    }