[关闭]
@cnhappier 2015-08-06T11:04:21.000000Z 字数 1373 阅读 919

Android获取内存信息

获取可用内存

public static long getRuntimeAvailableMemory()
{
    MemoryInfo memoryInfo = new MemoryInfo();
    ActivityManager activityManager = (ActivityManager) ContextManager.systemService(Context.ACTIVITY_SERVICE);
    activityManager.getMemoryInfo(memoryInfo);

    return memoryInfo.availMem;
}

获取总内存

因为memoryInfo.totalMen,有API兼容性问题。
所以可以从/proc/meminfo,内获取

public static long getTotalMemory()
{
    String memInfoFile = "/proc/meminfo";
    long totalMemory = 0;

    FileReader memoryInfoReader = null;
    BufferedReader bufferedReader = null;

    try
    {
        memoryInfoReader = new FileReader(memInfoFile);
        bufferedReader = new BufferedReader(memoryInfoReader, 4096);

        // read the first line of MemTotal:

        String content = bufferedReader.readLine();
        while(content!=null)
        {
            if(content.startsWith("MemTotal:"))
            {
                String[] arrayInfo = content.trim().split("\\s+");
                totalMemory = Long.parseLong(arrayInfo[1]) * 1024;
            }

            content = bufferedReader.readLine();
        }
    }
    catch (Exception e)
    {
    }
    finally
    {
        if (bufferedReader != null)
        {
            try
            {
                bufferedReader.close();
            }
            catch (IOException e)
            {
            }
        }
        if (memoryInfoReader != null)
        {

            try
            {
                memoryInfoReader.close();
            }
            catch (IOException e)
            {
            }
        }
    }
    return totalMemory;
}

总结

到底使用memoryInfo和读取/proc/meminfo,有什么区别呢?
答案是没区别,memoryinfo就是读取的/proc/meminfo的内容.....

具体有个注意就是:available = MemFree+Cached

MemFree: LowFree与HighFree的总和,被系统留着未使用的内存。
Cached: 被高速缓冲存储器(cache memory)用的内存的大小(等于diskcache minus SwapCache)

代码在这里:android_util_Process.cpp

参考资料

Android 获取内存信息

ActivityManager.MemoryInfo and /proc/meminfo file have different values

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注