MAT 工具的使用的一些知识

Mat工具

一、图示

1.饼状图:反应的大的对象的占用的retainedsize

a.可以反映出相关对象所在的类,大小,以及classloader

2.柱状图:根据不同的类类型的实例个数,按实例的数目多少列出

a.根据不同的类类型来列出所占用的大小。比如int[]类型的大小占用。

b.通过listobjects->with incoming references找出具体的变量名。

c.树状图可以根据不同包,类型,以及不同的classloader来查询占用情况。

d.可以通过比较两个hprof文件类类型的对象个数来定位增长。

e.柱状图可以列出不同类型的实例个数及所占大小。

3.树状图:根据不同对象占用的retainedsize列出

二、使用OQL可以查询语句。

三、导出报告

四、使用举例

1.进入柱状图-》通过查找自己定义类的个数-listobjects with incoming references-》选中某个对象-Pathto gc roots excludeall soft/weak/phantom references

2.进入柱状图-Groupby package-》找到自己的包,自己的类-》查看个数,占用大小。

3.树状图找出开销最大的对象。

进入树状图,根据显示出来的占用情况-listobjects with outcoming references-》找出占用大的对象。

4.打开两个hprof文件,这两个文件是不同时刻的,通过比较数目及占有大小的变化来定位问题。

柱状图-compareto another heap dump-》选择-》查看数目变化大的,或者retainedsize大的物件。也可以搜寻自己的类,来查看变化。

五、附

1.占用方式:

i.shallowsize

a.对象本身占用内存的大小,不包含对其他对象的引用。

b.对象头+成员变量(不是成员变量值)的大小。

i.retainedsize:

a.对象能直接或间接访问到的对象的Shallow之和。

b.同样是指这个对象被回收后能够被gc的大小。

你可能感兴趣的:(mat)