我最近买了一部Moto Atrix 2手机。当我试着查看手机中的处理器规格时, Runtime.getRuntime()。availableProcessors()返回1。 / proc / cpuinfo也有关于处理器0的信息。
出于好奇,我在朋友的三星Galaxy S2中检查了同样的信息,这也是一款双核手机。这也表明没有。核心是1。
我在我的Moto xoom平板电脑中检查了同样的内容,这也是双核心。这次availableProcessors()返回2,cpuinfo也有处理器0和处理器1的详细信息。
我很困惑。为什么有些设备会携带不同的信有人可以解释这个异常吗?
答案 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());
}
}