一、安装Eclipse MAT插件
1.打开Eclipse->help->add->输入如下值
2.勾选Memory Analyzer for Eclipse IDE选项
3.一直点击next完成安装
ps:由于软件更新频繁,所以在线安装网址时常变化,推荐离线安装:在http://www.eclipse.org/mat/downloads.php下载插件后用eclipse进行离线安装。
二、使用
1.打开ADT的DDMS视图,在devices列表中选择一个进程(这里选择oschina app进行分析)并点击红框处,然后点击右边那个按钮
这时就会出现MAT的overview界面
2.界面分析
a.overview界面,如上图,提供一个概览界面
b.Histogram视图,它提供每个类的对象统计
c.支配树(Dominator Tree),提供程序中最占内存的对象 (described later in the article)
d.对象查询语言(Object Query Language Studio), 用来写MAT查询的工具
e.专家系统测试(Expert System Test)
i.堆Dump概况(Heap Dump Overview) –提供堆dump文件的详细信息
ii.疑似泄露点(Leak Suspects) – 提供内存泄露疑点占用内存大小,被谁加载的,以及类型等详细信息。
iii.Top Components – 提供占内存最多的对象信息,还包括可能的内存浪费信息.
f.查询浏览器(Query Browser) – 提供很多很有用的查询,有助于内存分析,本文将会介绍最有用的那些查询。根据地址查找对象 – 可以根据提供的一个地址查找某个特定的对象.
i.对象列表(List Objects) – 显示应用中所有对象,以及这些对象持有哪些其他对象和被哪些其他对象持有,(MAT会提示查询哪一个对象)。
ii.根据类显示对象(Show Objects by Class) – 列出每个类有多少对象.
iii.到GC根节点的路径(Path to GC Roots) – 显示到根节点的引用路径 (有好多过滤选项).
iv.合并到GC根节点的最短路径(Merge Shortest Paths to GC Roots) –找到从GC根节点到一个对象或一组对象的共同路径
v.即时支配(Immediate Dominators) – Finds and aggregates on a class level all objects dominating a given set of objects. 在给定的一组对象中,从类的层面上查找并聚合所有支配关系。(在垃圾回收理论中支配是指从某个对象在另外一个对象的保留堆中)
vi.显示保留集合(Show Retained Set) – 计算一个对象的保留堆大小.
g.饼图 – 显示持有内存最大的对象
h.直方图 – 显示每个类的对象数量
i.支配树 – 列出所有对象,并按照对象持有的保留堆大小排序
j.检查器 – 选择一个对象,并显示其详细信息