APP内存占用测试

本文介绍APP内存占用测试的主要测试点及方法,包括不同使用状态下的内存消耗情况,如何使用adb命令进行内存监控,以及如何判断内存泄漏和分析内存占用过大等问题。

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

APP内存占用测试

1 主要测试点

空闲状态

切换至后台或者启动后不做任何操作,消耗内存最少。

中强度状态 

时间偏长的操作应用。

高强度状态

高强度使用应用,可以跑 monkey 来测试(通常用来测试内存泄漏)。

内存泄漏 
指使用 malloc 或 new 申请了一块内存,但是没有通过 free 或 delete 将内 存释放,导致这块内存一直处于占用状态。 

2 测试方法

使用 adb 命令 
adb shell dumpsys meminfo welab.bank.mobile.stage
 
主要指标 

Native heap alloc、Dalvik heap alloc 
若这两个值一直增长,说明可能出现内存泄漏

PSS,

App 实际占用的内存大小:

下图可以看出内存总共占用329581,也就是329M,说明该APP占用内存很大

多次中这条adb命令,对比以下参数:
Native heap alloc、Dalvik heap alloc 、总内存

主要关注

退出某个页面后,内存是否有回落。 
如果没有及时回落,且程序自动 GC(Garbage Collection,垃圾回收)或 者手动 GC,那便可确认有问题。 

进行某个操作后,内存是否增长过快。
如果增长过快,也有可能存在风险,需重复操作确认。

android程序内存被分为2部分:native和dalvik
dalvik就是我们平常说的java堆,
我们创建的对象是在这里面分配的
查看pss total和heap size(27716KB)
不能超过最大限制(使用下面的命令查看)

adb shell
getprop | grep heapgrowthlimit


查看单个应用程序最大内存限制(meminfo里面的dalvik heap size的最大值27716KB,
如果超出了192M那就很可能会发生OOM)

 

总结:
每次gc后,pss total没有明显回落,就有可能存在内存泄漏,但仍需长时间观察。
dalvik heap size超过heapgrowthlimit会发生OOM,
但如果Manifest中的application标签中声明android:largeHeap=True,
则dalvik heap达到heapgrowthlimit限制的时候不会出现OOM,
需要达到heap size的时候才会出现OOM

adb shell
getprop | grep dalvik.vm.heapsize  单个java虚拟机最大的内存限制

 

再次总结:
dalvik.vm.heapstartsize----------初始分配的内存大小
dalvik.vm.heapgrowthlimit------应用的最大内存限制
dalvik.vm.heapsize--------------java虚拟机最大内存限制

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值