0
点赞
收藏
分享

微信扫一扫

Android 获取真实的进程运行时内存

正义的杰克船长 2022-03-11 阅读 106

最近,在项目中做性能优化需要监控进程运行时内存。

笔者在​​​​​​Android 查看第三方应用进程的内存开销_xiaobaaidaba123的专栏-CSDN博客_android 内存开销

介绍过使用adb命令查看进程的内存开销。但是如果需要持续监控的话,需要另外的方法。

网上查找了下 使用ActivityManager 中的 getProcessMemoryInfo()方法可以获取到进程运行时内存,但是这个接口在 android P以上 限频了,拿到的内存可能是过去时间的,不准确。

因此本文介绍的是另外一种方法:通过读取

"/proc/" + android.os.Process.myPid() + "/status" 路径文件里的信息获取。
public static long getProcessRealMemory() {
        String memFilePath = "/proc/" + android.os.Process.myPid() + "/status";
        BufferedReader bufferedReader = null;
        try {
            FileInputStream fileInputStream = new FileInputStream(memFilePath);
            InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "UTF-8");
            bufferedReader = new BufferedReader(inputStreamReader);
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                Log.d(TAG, " read line : " + line);
                if(!TextUtils.isEmpty(line) && line.contains("VmRSS")) {
                    String rss = line.split(":")[1].trim().split( " ")[0];
                    return Integer.parseInt(rss) * 1024;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if(bufferedReader != null) {
                try{
                    bufferedReader.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        return -1;
    }

效果可行:

 CODING | 一站式软件研发管理平台

举报

相关推荐

0 条评论