我最近买了一部Moto Atrix2手机。当我试图查看手机中的处理器规格时,Runtime.getRuntime().availableProcessors()返回了1。/proc/cpuinfo也只有处理器0的信息。
出于好奇,我查看了我朋友的三星Galaxy S2,这也是一款双核手机。这也说明了不是。核心数为1。
我在我的Moto xoom平板电脑上也检查了一下,它也是双核的。这一次,availableProcessors()返回2,cpuinfo还包含处理器0和处理器1的详细信息。
我很困惑。为什么有些设备会携带不同的信息?谁能解释一下这种反常现象?
发布于 2012-04-13 08:19:19
Runtime.getRuntime().availableProcessors()只返回在线处理器的数量,所以当第二个内核休眠时,它将返回1。这样做是为了在资源密集度较低的任务期间保存电源。
要查看所有可用内核,请查看/sys/devices/system/cpu/
发布于 2014-10-09 07:28:33
这将得到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());
}
}https://stackoverflow.com/questions/10133570
复制相似问题