MAT内存分析工具

来源:互联网 发布:java并行程序设计 pdf 编辑:程序博客网 时间:2024/05/16 19:48

1.打开Eclipse/Android Studio

2.eclipse选择 Help->Install New Software; AS 中打开devices monitor,选择Help->Install New Software;

3.在Work with中添加站点:http://download.eclipse.org/mat/1.0/update-site/(这个地址可能会变化,但是新的地址可以在官方网站上找到:http://www.eclipse.org/mat/downloads.php ),但是在AS中会报错,安装不了,没办法,可能还不支持!

4.在Eclipse/AS中的DDMS中选择要测试的进程,然后点击Update Heap 和Dump HPROF file两个Button。

把 .hprof 文件保存到PC上的\ android-sdk-windows\tools目录下。这个由DDMS生成的文件不能直接在MAT打开,需要转换。

运行cmd打开命令行,cd到\ android-sdk-windows\tools所在目录,并输入命令hprof-conv xxxxx.hprof yyyyy.hprof,其中xxxxx.hprof为原始文件,yyyyy.hprof为转换过后的文件。转换过后的文件自动放在android-sdk-windows\tools 目录下。

OK,到此为止,.hprof文件处理完毕,可以用来分析内存泄露情况了。

5.打开MAT:

在Eclipse中点击Windows->Open Perspective->Other->Memory Analysis

6.导入.hprof文件

在MAT中点击 File->Open file,浏览到刚刚转换而得到的.hprof文件,并Cancel掉自动生成报告, 否则会自动生成很多文件,点击QQL图标,然后在编辑框中输入你需要查询的类,如:select * from instanceof com.XXX.YYY.ui.BaseFragment, 将会查找到继承自BaseFragment的类。然后按F5 or Ctrl-Enter将会执行查询命令。详细命令书写方式请查看help.



然后选择对应的Package 类点右键,在弹出菜单中选择List objects->With incoming references。

这时会列出所有可疑类,右键点击某一项,并选择Path to GC Roots->exclude all references,会进一步筛选出跟程序相关的所有有内存泄露的类。据此,可以追踪到代码中的某一个产生泄露的类。


最后可以看到有一个mDispatcher被一个list引用了无法释放,接着就是好好查代码吧!

MAT使用方法:http://blog.csdn.net/aaa2832/article/details/19419679/

或者直接查看help !

0 0
原创粉丝点击