首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自/proc/meminfo的总Ram

来自/proc/meminfo的总Ram
EN

Stack Overflow用户
提问于 2013-06-14 00:31:51
回答 4查看 1.9K关注 0票数 1

我正在获得kb,但我想要内存mb如何才能得到它,因为我得到了“MemTotal: 855000kb”,但我想要855mb如何获得内存Mb和如何获得唯一的数字是不想要Memtotal和kb

代码语言:javascript
复制
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) 
    {       
    }
}  
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-06-14 00:41:50

1MB中有1024KB,因此您可以将KB除以1024,而不是1000,以获得MB。这是如果它真的以KB (技术上是千比字节,KiB)为单位进行报告的话。大多数开发人员将千字节(KB)称为1024字节,而不是1000字节。

1KB = 2^10字节

1MB = 2^20字节

1 1GB = 2^30字节

票数 1
EN

Stack Overflow用户

发布于 2015-03-19 23:31:41

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

代码语言:javascript
复制
...
finally{
    try {
        if (localBufferedReader != null) {
            localBufferedReader.close();
        }
    } catch (IOException e) {}
}
票数 2
EN

Stack Overflow用户

发布于 2013-06-14 01:44:54

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

代码语言:javascript
复制
string result = Regex.Replace(input, @"[^\d]", "");

但是如果MemTotal总是以kb为单位返回,我就不用了。如果也可以返回其他字符,比如mb,那么也可以获取最后两个字符,并根据这两个字符进行计算。

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

代码语言:javascript
复制
String result = input.replaceAll("[^\\d]", "");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17092387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档