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

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 获取
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱打球的程小员许乔丹

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

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

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

打赏作者

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

抵扣说明:

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

余额充值