Android Studio MAT内存分析初探

做开发有一些年头的想必都会碰到程序性能方面的问题,性能优化有很多种,但是首先我们得定位是哪一块的问题;好在前方有巨人可以让我们站,Android Studio已经为我们提供了性能分析工具MAT。

下面有两种使用方式:

一、Android Device Monitor

1、打开Android Studio通过Tools ->Android -> Android Device Monitor打开。

这里写图片描述

在这里楼主遇到了一个小插曲,在打开的时候报错了:unexpected error while parsing input: Invalid uiautomator hierarchy file 解决方式就是:找到路径:C:\Users\用户名\.android下的monitor-workspace文件夹,删掉它重新打开就好了。

2、接下来在Android Device Monitor界面中首先选中你要分析的应用程序的包名(这里我的是zz.mack.com.mytimeview),然后点击Update Heap来更新统计信息,接着点击Cause GC制造GC操作即可查看当前堆的占用情况,最后点击Dump HPROF file 即当前应用的内存信息保存成hprof文件保存至一个目录下;具体如下图:

这里写图片描述

3、打开Android Studio。将你刚才保存的hprof文件拖动到编写代码的窗口即可,就是出现下面的信息:
这里写图片描述

这里首先说下A区域:
左上角是HPROF Viewer查看方式可选列表, 分别是用来选择Heap区域, 和Class View的展示方式的:
Heap类型分为:
App Heap – 当前App使用的Heap
Image Heap – 磁盘上当前App的内存映射拷贝
Zygote Heap – Zygote进程Heap(每个App进程都是从Zygote孵化出来的, 这部分基本是framework中的通用的类的Heap)

Class List View – 类列表方式
Package Tree View – 根据包结构的树状显示

紧接着下面的表名:

列名说明
Class NameHeap中的所有Class
Total Count内存中该类这个对象总共的数量
Heap Count堆内存中这个类对象的个数
Sizeof每个该实例占用的内存大小
Shallow Size所有该类的实例占用的内存大小
Retained Size所有该类对象被释放掉,会释放多少内存

接下来是B区域

列名说明
Instance该类的实例
Depth深度, 从任一GC Root点到该实例的最短跳数
Dominating Size该实例可支配的内存大小

C区域则描述的是B中实例具体被引用信息。

好了上面就是通过Android Device Monitor来生成hprof文件,其实Android Studio已经为我们集成了工具。

二、Android Studio

打开AS,找到底部的工具栏Android Monitor;如图依次点击三个按钮1/2/3,最后就会生成上面的hprof文件并自动打开:
这里写图片描述
接下来的界面跟第一种方式是一样的,这里就不细说了。
如果有发现按钮不能点击的同学,请先编译运行程序。

最后通过这个工具可以很方便让我们快速找出哪个类占用内存比较多容易引发内存泄漏,从而我们好做应对;一般来说容易内存泄漏的都更图片有关,所以做好图片的处理会很关键。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值