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

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.总结

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

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

时间: 2024-10-10 17:53:37

Android性能优化-MAT工具的简单使用的相关文章

Android性能优化——工具篇

Android性能优化是Android开发中经常遇见的一个问题,接下来将对Android性能优化方面的知识点做一个简单的梳理和总结,将从工具和代码两方面进行梳理.所谓工欲善其事必先利其器,本文首先来看一下Android性能优化有哪些得力的工具. TraceView traceview是Android SDK中自带的一个工具,可以对应用中方法调用耗时进行统计分析,是Android性能优化和分析时一个很重要的工具.traceview位于SDK下的tools目录中,使用时可以在cmd窗口运行trace

Android 性能优化 五 性能分析工具dumpsys的使用

Android提供的dumpsys工具可以用于查看感兴趣的系统服务信息与状态,手机连接电脑后可以直接命令行执行adb shell dumpsys 查看所有支持的Service但是这样输出的太多,可以通过dumpsys | grep "DUMP OF SERVICE" 仅显示主要的Service的信息 一.列出dumpsys所有支持命令 > adb shell $ dumpsys | grep "DUMP OF SERVICE" 以下是在我个人三星S3手机上的输

Linux/Android 性能优化工具 perf

/***************************************************************************** * Linux/Android 性能优化工具 perf * 说明: * 之前一直在找Android上的性能优化工具,但是一直不知道应该找哪方面的关键字, * 今天在看Android源代码目录的时候看到linux-tools-perf,查了点相关资料,最后 * 发现这好像就是我一直在找的查看系统性能的工具,目前没有验证任何东西,先记录 * 下

Android性能优化的一些理解

前言 Android性能优化对Android程序的维护和拓展是有很大帮助的,我们知道Android手机不管是内存还是CPU都无法同PC相比,这也就意味着我们必须要谨慎的去使用内存和CPU资源.因为稍稍不注意可能就会引发诸如OOM.ANR.内存泄漏等问题,所以熟悉Android性能优化的几个方法可以有效地提高应用程序的性能,我们可能都能说出一些性能优化的方法,比如布局优化.绘制优化.线程优化等等,但是可能我们会忽视某些小细节,比如布局优化我们可能都知道可以使用< include >来减少布局的层

android性能优化的一些东西

说到android性能优化,总觉得是一个很模糊的东西,因为app的性能始终适合手机本身的性能挂钩的,也许一些消耗内容的操作,在一些移动设备可以运行,但是在另外一些上面就会出现内存溢出的问题,但是不管怎么说,但问题出现的时候,我们应该有解决的办法,最起码有解决办法的思路,下面就是聊聊android性能一些问题. 首先是三个名称:内存泄漏,内存溢出(OOM),应用程序无响应(ANR). 我们知道,android手机上运行app其实很多时候(只是很多时候),每个app都运行在一个进程中,这个进程是设备

Android性能优化:手把手带你全面了解 内存泄露 &amp; 解决方案

. 简介 即 ML (Memory Leak)指 程序在申请内存后,当该内存不需再使用 但 却无法被释放 & 归还给 程序的现象2. 对应用程序的影响 容易使得应用程序发生内存溢出,即 OOM 内存溢出 简介: 示意图3. 发生内存泄露的本质原因 具体描述示意图 特别注意 从机制上的角度来说,由于 Java存在垃圾回收机制(GC),理应不存在内存泄露:出现内存泄露的原因仅仅是外部人为原因 = 无意识地持有对象引用,使得 持有引用者的生命周期 > 被引用者的生命周期4. 储备知识:Androi

Android 性能优化的方面方面都在这儿

又到周六了,鸿洋的不定期的周六放送又来了~~这次来谈谈性能优化吧.大家在工作中或多或少都会拿自家的应用和竞品app做比对,不可避免的需要做一些app性能优化的活.很多时候可能是策略上的调整,不过还是有非常多的通用的方式. 一般情况下,我们谈性能优化基本上会从以下几个方面: App启动速度优化 UI流畅度优化 内存优化 apk瘦身 电量优化 还有些网络速度优化.以及特定类型app的一些针对性的优化,比如播放器起播速度等... 我们重点谈论上面5个方面. 性能优化正常的流程是,发现自己某方面与竞品差

Google 发布 Android 性能优化典范

2015年伊始,Google发布了关于Android性能优化典范的专题, 一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App.课程专题不仅仅介绍了Android系统中有关性能问题的底层工作原理,同时也介绍了如何通过工具来找出性能问题以及提升性能的建议.主要从三个 方面展开,Android的渲染机制,内存与GC,电量优化.下面是对这些问题和建议的总结梳理. 0)Render Performance 大多数用户感知到的卡顿等性能问题的最主要根源都是因为渲染性能.从设计

[Android Pro] Android性能优化典范第一季

reference to : http://www.cnblogs.com/hanyonglu/p/4244035.html#undefined 2015年伊始,Google发布了关于Android性能优化典范的专题,一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App.课程专题不仅仅介绍了Android系统中有关性能问题的底层工作原理,同时也介绍了如何通过工具来找出性能问题以及提升性能的建议. 主要从三个方面展开,Android的渲染机制,内存与GC,电量优化.下