如何获得一个设备的总RAM大小?

我想获得一个设备的完整RAM大小memoryInfo.getTotalPss()返回0.在ActivityManager.MemoryInfo没有获取总RAM大小的函数。

这个怎么做?

    标准的unix命令: $ cat /proc/meminfo

    请注意/proc/meminfo是一个文件。 你实际上不必运行cat ,你可以简单地阅读文件。

    从API级别16开始,现在可以使用MemoryInfo类的MemoryInfo属性。

    喜欢这个:

     ActivityManager actManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); ActivityManager.MemoryInfo memInfo = new ActivityManager.MemoryInfo(); actManager.getMemoryInfo(memInfo); long totalMemory = memInfo.totalMem; 

    Api级别15和更低仍然需要使用unix命令,如cweiske的答案中所示。

    我可以用这种方法获得可用的RAM内存

     public String getTotalRAM() { RandomAccessFile reader = null; String load = null; DecimalFormat twoDecimalForm = new DecimalFormat("#.##"); double totRam = 0; String lastValue = ""; try { reader = new RandomAccessFile("/proc/meminfo", "r"); load = reader.readLine(); // Get the Number value from the string Pattern p = Pattern.compile("(\\d+)"); Matcher m = p.matcher(load); String value = ""; while (m.find()) { value = m.group(1); // System.out.println("Ram : " + value); } reader.close(); totRam = Double.parseDouble(value); // totRam = totRam / 1024; double mb = totRam / 1024.0; double gb = totRam / 1048576.0; double tb = totRam / 1073741824.0; if (tb > 1) { lastValue = twoDecimalForm.format(tb).concat(" TB"); } else if (gb > 1) { lastValue = twoDecimalForm.format(gb).concat(" GB"); } else if (mb > 1) { lastValue = twoDecimalForm.format(mb).concat(" MB"); } else { lastValue = twoDecimalForm.format(totRam).concat(" KB"); } } catch (IOException ex) { ex.printStackTrace(); } finally { // Streams.close(reader); } return lastValue; } 

    经过testing的Android 4.3:SAMSUNG S3

    你可以通过使用这个代码得到总的RAM大小:

      var ActivityManager = GetSystemService(Activity.ActivityService)作为ActivityManager;
     var memoryInfo = new ActivityManager.MemoryInfo();
     activityManager.GetMemoryInfo(memoryInfo);
    
     var totalRam = memoryInfo.TotalMem /(1024 * 1024); 

    如果设备有1GB RAM,totalRam将是1000。