1. Android内存基本分析工具大致如下:
- dumpsys meminfo dumpsys meminfo -a pid
- LeakCanary : 开源的源码接入
- MemoryProfiler :developer.android.com/studio/prof…
- MAT
2. MAT介绍
MAT 是Eclipse开发的强⼤Java堆内存分析⼯具,是分析内存使⽤和内存泄漏的利器,适用于在本地进行应用内存问题分析。 通过am dumpheap pid抓出的进程内存堆hprof文件,需要进行一次转换才能由MAT工具打开,转换使用android sdk目录下hprof-conv.exe工具,方法如下:
D:\soft\android-sdk\platform-tools\hprof-conv.exe E:\memory\system_server\temp\base.hprof E:\memory\system_server\temp\base_mat.hprof
MAT打开hprof文件后,其界面如下:
MAT主要提供以下功能,以下分别进行说明:
- 类直方图:以对象的维度显示占用的内存大小和数量。最常用的功能。
- 支配树:以Retained Size大小排序,列出最大的对象和它们支配持有的对象。支配树概念可参考上一节。
- OQL查询:类SQL语言去查询堆中的对象情况。
- Top Consumers:以图形的形式列出各类别的大内存对象,可以比较直观的看出各类别维度哪些对象占用的内存较大。
- Leak Suspects:MAT自动分析出的可能存在内存泄漏的概括。
- 堆hprof文件对比:对比堆hprof文件之间的差异。