1. 空闲状态:切换至后台或者启动后不做任何操作,消耗内存最少。
2. 中强度状态:时间偏长的操作应 用。
3. 高强度状态:高强度使用应用,可以跑monkey来测试(通常用来测试内存泄漏)。
内存泄漏:指应用里的内存一直没有释放,内存一直增加 ,系统内存一直减少
测试方法:
1. 使用adb命令: adb shell dumpsys meminfo packageName
获取应用包名和Actively: adb shell dumpsys window | findstr mCurrentFocus
测试关注点:
1. Native heap alloc:JIN的内存分配
2. Dalvik heap alloc:Java层的内存分配
3. PSS
关注点:
1. 退出某个页面后,内存是否有回落。 如果没有及时回落,且程序自动GC或者手动GC,那便可确认有问题。
2. 进行某个操作后,内存是否增长过快。 如果增长过快,也有可能存在风险,需重复操作确认。测试方法:借助性能测试工具:GC、Emmagee(只支持安卓6.0及以下的版本)、iTest等工具均可以监控。
android检查内存泄露步骤:
1、运行Monkey进行压力测试:
adb shell monkey -p cn.microinvestment.weitou --pct-touch 100 --ingore-crashes --throttle 1000 -s 100 -v -v 50
2、监控内存值,如果出现过大等递增异常则保存HPROF文件(hprof文件是Java 虚拟机的Heap快照)用于分析查看应用内存的命令:
adb shell dumpsys meminfo cn.microinvestment.weitou(进程名)
如果发现内存过大,则保存HPROF文件:adb shell am dumpheap <进程名> <保存路径>
3、分析hprof文件
用工具MAT来查看,首先还要这个HPROF文件转换成MAT可读的文件
在Android SDK tool里面有个hprof-conv命令:
hprof-conv <原HPROF文件路径> <转换后的HPROF路径>
hprof-conv a.hprof b.hprof
4、用MAT工具打开转换后的HPROF文件
一般选择Leak Suspects Report(通过SQL语句来查询对象有没有被释放掉,如果有多个相同的对象,则会存在内存泄露的问题)