Android Studio内存泄漏检查(MAT使用)

Java引入的垃圾回收机制(GC)很好的解决了一部分内存泄漏问题,但是并不能完全封锁内存泄漏给我们带来的困扰。除了养成良好的编码习惯来避免的一部分常见的内存泄漏之外,良好的内存泄漏检测工具更是能高效快速的为我们测出我们项目中的内存隐患。今天介绍的一款Eclipse时代就常用的内存检测工具——Eclipse Memory Analyzer,结合Android Studio使用。

所需要的工具

1.Android Studio 1.3.2(1.1以上即可)

2.Eclipse MemoryAnalyzer(Eclipse Memory Analyzer安装)

步骤

1.导出hprof文件

在Android Studio中选择自己的项目,切换到"Android"页签,点击右边的"Dump Java Heap"

Android Studio内存泄漏检查(MAT使用)_第1张图片

导出的hprof的文件会保存在项目的captures目录下面

Android Studio内存泄漏检查(MAT使用)_第2张图片

2.使用MAT导入hprof文件

选择Open File 选中你导出的hprof文件

Android Studio内存泄漏检查(MAT使用)_第3张图片
Android Studio内存泄漏检查(MAT使用)_第4张图片

注意:出现如上错误是因为android的虚拟机导出的内存文件hprof文件格式与标准的 java hprof文件格式标准不一样,根本原因两者的虚拟机不一致导致的。这里用SDK自带的转换进行转换之后就能正常打开。

3.hprof文件格式转换

Android Studio内存泄漏检查(MAT使用)_第5张图片

For example:

hprof-conv android.hprof mat.hprof

然后用MAT导入转换过后的mat.hprof文件即可

Android Studio内存泄漏检查(MAT使用)_第6张图片
Eclipse Memory Analyzer运行界面

4.Memory Analyzer 

从上图可以看到它的大部分功能。

1. Histogram可以列出内存中的对象,对象的个数以及大小。

2. Dominator Tree可以列出那个线程,以及线程下面的那些对象占用的空间。

3.Top consumers通过图形列出最大的object。

4.Leak Suspects通过MA自动分析泄漏的原因。


参考:Android内存优化之二:MAT使用进阶 - 为程序员服务

用Eclipse Memory Analyzer查找内存泄露 - - ITeye技术网站

一次使用Eclipse Memory Analyzer分析Tomcat内存溢出 - - ITeye技术网站

Android 开发进阶之『清除应用中的内存泄漏』 -




扫码关注我,一起交流学习
Android Studio内存泄漏检查(MAT使用)_第7张图片
扫码加入QQ群共享资源

你可能感兴趣的:(Android Studio内存泄漏检查(MAT使用))