- 查看内存数据之前,要知道你测试的那台手机对于每个应用分配的最高内存值到底是多少。查看下面路径的文件的内存来获取手机给予每个应用分配的最高内部值。
/system/build.prop
其中对于堆分配的大小是dalvik.vm.heapgrowthlimit,这个数值代表着当你的应用超过这个内存值的时候,在该Android手机内会强制终止这个应用的进程。
- adb shell procrank
可以得到PID(进行ID号)、Vss(占用的虚拟内存)、Rss(占用的物理内存)、Pss(占用的私有内存加上平均分配的共享内存)、Uss(私有内存)
主要看Uss,如果超过应用被分配的最大内存值,那么就会出现应用的闪退。如果获取不到Uss,那就看Pss。
- adb shell dumpsys meminfo <package name>
- 我们获取数据的目的 主要看我们应用的内存是否是一个一味上涨的趋势。 正常情况下,每个界面的跳转或者场景的切换,内存值都会被被动或主动地做回收,但如果有泄露就会出现一段持续性地上涨,虽然也许最后还是会被部分地回收。
- Memory Monitor查看内存风险
1)实时查看APP的内部分配情况
2)快速判断APP是否由于GC(垃圾回收)操作造成卡顿
3)快速判断APP是否因为超出内存而产生崩溃
- 当一个内存短时间内发生掉落,我们可以认为发生了GC操作。
- Memory Monitor可以帮助我们发现的问题:
1)发现内存抖动的场景
2)发现大内存对象分配的场景
3)发现内部不断增长的场景
4)确定卡顿问题是否因为执行了GC操作
- MAT分析内存泄露
MAT是一个JAVA Heaper分析器,可以用来分析内存泄露和减少内部才能消耗。分析Process showmap中的/dev/ashmem/dalvik-heap(deleted)一项所占用的Memory。
Android Studio和MAT组合,可以缩小内存问题的范围以及最终定位具体所在的代码。
时间: 2024-10-10 10:43:36