Android性能优化-MAT工具的简单使用

1.MAT的简单介绍

MAT(Memory Analyzer Tool) 是基于heap dumps来进行内存分析的工具,一个基于Eclipse的内存分析工具,是一个快速、功能丰富的JAVA heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗。

2.下载安装

  • 下载地址 http://www.eclipse.org/mat/downloads.php
    • 地址里面有插件包和独立安装包,如下图
      Android性能优化-MAT工具的简单使用_第1张图片
    • 选择自己合适的下载
  • 我这里选择的是zip包,在eclipse中进行了安装。

3.获取.hprof文件

  • 在android studio中打开Android Monitor面板,选择Memory,点击左侧dump java heap按钮dump内存信息,会在项目的captures文件夹下生成.hprof文件,(进文件夹里看,)如下图所示。
    Android性能优化-MAT工具的简单使用_第2张图片
    但是上面生成的文件并不能在mat中打开,我们需要使用hprof-conv工具转一下,hprof-conv在SDK的platform-tools下,windos下双击启动,ubuntu下./hprof-conv启动,转化命令如下

    hprof-conv 输入文件路径 输出文件路径

    结果如图显示:
    Android性能优化-MAT工具的简单使用_第3张图片,这样我们就可以在mat中打开了。

  • 当然,我们也可以直接在eclipse中启动DDMS,点击dump xxx,然后stop,就会被mat自动打开了,如下图:
    Android性能优化-MAT工具的简单使用_第4张图片
    注意下方的actions区域,这是我们需要重点关注的对象。

4.有用的几个功能

4.1.Histogram:列出内存中的对象,对象的个数以及大小

Android性能优化-MAT工具的简单使用_第5张图片

4.2 Dominator Tree 列出最大的对象以及其依赖存活的Object (大小是以Retained Heap为标准排序的)

Android性能优化-MAT工具的简单使用_第6张图片

4.3 Top Consumers : 通过图形列出最大的object

Android性能优化-MAT工具的简单使用_第7张图片

4.4 Thread_Overview 应用的线程信息。

Android性能优化-MAT工具的简单使用_第8张图片

4.5 查看GC引用关系

在dominator tree 试图下,点击某个对象,右键Path To GC Roots —> with all references ,查看引用关系。如下图
Android性能优化-MAT工具的简单使用_第9张图片
看到,我这里只有一个引用,复杂的对象是有引用链的,不在多说了,

5. 如何知道是否有内存泄露

上面说了那么多,然而,并没有什么乱用,稀里糊涂的看了一些图,稀里糊涂的知道了一些视图,但是,妈的 我们还不知道怎么去查看哪些有内存泄露。但是,在4.5中我们可以看到GC roots可以看到引用关系,那么,我们就可以通过他来查看了,通过层层的引用关系,我们可以追溯到最终的引用点,通过结合代码分析以及检查引用类型以及被引用类等等。

6.总结

额,这么多下来,我也仅仅是了解到基本用法了,还有更多的用法需要我在工作中去领悟。

最后。给出几个参考链接。

  • MAT的使用一
  • MAT的使用二

你可能感兴趣的:(Android)