1.分析某个进程的内存情况
1.1 生成.hprof文件
可以在运行的设备上,使用adb命令生成 .hprof文件,表示在执行命令的那一刻,该进程的内存情况。如下:
am dumpheap com.example.demo /data/local/tmp/demo.hprof
这里就是对包名为com.example.demo这个进程在/data/local/tmp/目录下生成了一个demo.hprof的文件。
建议在最开始泄漏前和泄漏之后各采取一次,做对比。
2.2 分析.hprof文件
先用adb命令把文件从设备中导出:
adb pull /data/local/tmp/demo.hprof ~/log
然后在Android Studio中使用Profiler打开这个demo.hprof:
打开之后的界面,就可以看到各个模块占用内存的详细情况:
Allocations:Java堆中的实例个数
Native Size:Native层分配的内存大小
Shallow Size:本对象实例Java堆中占用的内存大小
Retained Size:这个类的实例本身的对象,以及它直接或者间接引用的所有对象占用的内存大小