码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2016-04-17 22:47:12      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:

1.MAT的简单介绍

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

2.下载安装

  • 下载地址 http://www.eclipse.org/mat/downloads.php
    • 地址里面有插件包和独立安装包,如下图
      技术分享
    • 选择自己合适的下载
  • 我这里选择的是zip包,在eclipse中进行了安装。

3.获取.hprof文件

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

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

    结果如图显示:
    技术分享,这样我们就可以在mat中打开了。

  • 当然,我们也可以直接在eclipse中启动DDMS,点击dump xxx,然后stop,就会被mat自动打开了,如下图:
    技术分享
    注意下方的actions区域,这是我们需要重点关注的对象。

4.有用的几个功能

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

技术分享

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

技术分享

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

技术分享

4.4 Thread_Overview 应用的线程信息。

技术分享

4.5 查看GC引用关系

在dominator tree 试图下,点击某个对象,右键Path To GC Roots —> with all references ,查看引用关系。如下图
技术分享
看到,我这里只有一个引用,复杂的对象是有引用链的,不在多说了,

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

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

6.总结

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

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

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

标签:

原文地址:http://blog.csdn.net/qq_21430549/article/details/51173369

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!