来自/ proc / meminfo的总Ram

时间:2013-06-13 16:31:51

标签: java android

我进入kb但是我想要ram in mb我怎么能得到它因为我得到“MemTotal:855000kb”但我想要855mb如何在Mb获得ram以及如何获得唯一的数字是不想要Memtotal和kb

public void getTotalMemory() {  
{
    String str1 = "/proc/meminfo";
    String str2;        
    String[] arrayOfString;
    long initial_memory = 0;
    try {
        FileReader localFileReader = new FileReader(str1);
        BufferedReader localBufferedReader = new BufferedReader(    localFileReader, 8192);
        str2 = localBufferedReader.readLine();//meminfo
        arrayOfString = str2.split("\\s+");
        for (String num : arrayOfString) {
            Log.i(str2, num + "\t");
        }
        //total Memory
        initial_memory = Integer.valueOf(arrayOfString[1]).intValue() * 1024;   
        localBufferedReader.close();
    } 
    catch (IOException e) 
    {       
    }
}  

4 个答案:

答案 0 :(得分:2)

要彻底关闭资源,请使用close()子句中的调用替换try内的finally来电:

...
finally{
    try {
        if (localBufferedReader != null) {
            localBufferedReader.close();
        }
    } catch (IOException e) {}
}

答案 1 :(得分:1)

1 MB中有1024 KB,因此您可以将KB除以1024而不是1000来获取MB。那就是它真的用KB报告(技术上是kibibytes,KiB)。大多数开发人员将千字节(KB)称为1024字节,而不是1000字节。

1KB = 2 ^ 10字节

1MB = 2 ^ 20字节

1GB = 2 ^ 30字节

答案 2 :(得分:1)

你可以使用正则表达式来获取数字,然后使用数学

string result = Regex.Replace(input, @"[^\d]", "");

但是如果MemTotal总是以kb返回,我就不会使用。如果还可以返回像mb这样的其他人也可以获得最后两个字符并根据它进行计算。

抱歉,上面代码为c#:)来到黑暗面

String result = input.replaceAll("[^\\d]", "");

答案 3 :(得分:0)

我提供了更新的代码,以mb,Goodluck!

提供当前内存的println
public static void getTotalMemory() {
String str1 = "/proc/meminfo";
String str2;        
String[] arrayOfString;
long initial_memory = 0;
try {
    FileReader localFileReader = new FileReader(str1);
    BufferedReader localBufferedReader = new BufferedReader(localFileReader, 8192);
    str2 = localBufferedReader.readLine();//meminfo
    arrayOfString = str2.split("\\s+");

    for (String num : arrayOfString) {
        //System.out.println(num + "\t");
    }
    //total Memory
    initial_memory = Integer.valueOf(arrayOfString[1]).intValue();   
    initial_memory = initial_memory/1024;

    System.out.println(initial_memory);
    localBufferedReader.close();
} 
catch (IOException e) 
{       
}

}