1

我正在获取 kb,但我想要 mb 中的 ram 我如何获得它,因为我正在获取“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

4 回答 4

2

要干净地关闭资源,请将close()内部的调用替换为子句try中的调用:finally

...
finally{
    try {
        if (localBufferedReader != null) {
            localBufferedReader.close();
        }
    } catch (IOException e) {}
}
于 2015-03-19T15:31:40.887 回答
1

1 MB 中有 1024 KB,因此您可以将 KB 除以 1024,而不是 1000 得到 MB。也就是说,如果它真正以 KB(技术上的千字节,KiB)报告。大多数开发人员将千字节 (KB) 称为 1024 字节,而不是 1000 字节。

1KB = 2^10 字节

1MB = 2^20 字节

1GB = 2^30 字节

于 2013-06-13T16:41:49.937 回答
1

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

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

但是如果 MemTotal 总是以 kb 为单位返回,我就不会使用。如果还可以返回像 mb 这样的其他字符,则还可以获取最后两个字符并据此进行计算。

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

String result = input.replaceAll("[^\\d]", "");
于 2013-06-13T17:44:54.343 回答
0

我提供了更新的代码,它提供了当前内存的 println,以 mb 为单位,祝你好运!

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) 
{       
}

}

于 2014-03-21T11:18:16.933 回答