Android系统性能监控最全面分析与实践(二)

本文详细探讨了Android系统性能监控,重点关注内存占用和CPU使用率。介绍了通过cat /proc/meminfo、dumpsys meminfo、free、MemoryInfo获取内存使用情况的四种方案,并对比了它们的优缺点。此外,还分析了如何获取内存使用率TOP5进程,推荐使用ps指令。同时,提到了获取CPU使用率和网络速度的方法,为开发Android系统性能监控工具奠定了基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

4、内存占用获取

4.1 当前内存使用情况

内存使用情况也是老生常谈的问题了,网上有很多资料,在此简单重温一遍。

方案一:cat /proc/meminfo

/proc/meminfo展示了系统内存使用情况,其中有两个关键指标:

  1. MemTotal:代表系统总内存大小,单位是KB
  2. MemFree:代表系统当前可用内存大小,单位是KB
    在apk执行cat指令读取该文件可以获取到目标数值,无论是效率还是适用性都很高。

image.png

方案二:dumpsys meminfo

dumpsys meminfo + [pkg]通常用来查看指定进程包名的内存使用情况,如果不加包名,可以得到当前内存总量和可使用内存量,其中:

  • Total RAM:内存总量
  • Free RAM:可使用内存量

image.png

然而dumpsys meminfo耗时达到秒级,耗时较久,效率不高。

方案三:free

使用free命令可以查看系统当前内存使用情况,其中有两个关键数据:

  • total:总内存大小
  • used:已使用的大小

image.png

虽然也满足需求,但本方案和方案一和二,都是通过执行shell指令获取一串数据,因此需要对数据加以解析才能得到目标数据,在方案实现上稍微麻烦一点。

方案四:MemoryInfo 获取

ActivityManager服务是对Activity管理、运行时功能管理和运行时数据结构的封装,进程、应用程序、服务、任务信息等。通过 ActivityManager 获取到的 MemoryInfo 是整个设备的内存信息,主要包括:

  • totalMem:内核可访问的总内存。
  • availMem:系统上的可用内存。
  • lowMemory:如果系统认为自己当前处于低内存状况,则设置为True。
  • threshold:系统认为内存较低并开始杀死后台服务和其他非外部进程的可用阈值。
val memoryInfo = ActivityManager.MemoryInfo()
mActivityManager.getMemoryInfo(memoryInfo)
totalMemory = memoryInfo.totalMem
availMemroy = memoryInfo.availMem

该方案是针对应用层获取系统内存信息的API函数,在应用层获取内存信息,推荐使用该方案。

结论
获取内存使用情况的方法 效率 实现难度 推荐
dumpsys meminfo
cat /proc/meminfo
free
MemoryInfo 获取
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱打球的程小员许乔丹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值