eclipse内存分析工具MAT浅谈(一)

[size=medium]MAT(Memory Analyzer Tool) 是基于heap dumps来进行分析的,所以首先必须通过一定的手段得到JAVA堆的DUMP文件。JDK自带的。JConsole 或者 JMAP都是不错的工具。

准备
(·)下载eclipse3.7
(·)安装MAT插件:http://download.eclipse.org/mat/1.1/update-site/

安装完MAT后,进入MAT的Perspectives视图,通过File > Open Heap Dump...打开heapDumps文件,就可以看到MAT给出了overview page

[img]http://dl.iteye.com/upload/attachment/0068/1279/8492fbb5-e4eb-3d78-af7f-484adac0c170.jpg[/img]

在底部的Actions有

[b](1)histogram [/b]
列出了有每个种有多少实例,每种类型的实例集合的 shallow size 和 retained size . shallow size指的是对象所消耗的内存大小,如每个对象引起消耗4个字节,或者8个字节,取决于你的操作系统(32位,还是64位), retained size的概念依赖于Retained set 的概念,Retained set 指的是当对象X被回收时,所有被垃圾回收器移除的对象集合,
Retained size 即是Retained set所保持的内存大小。


[img]http://dl.iteye.com/upload/attachment/0068/1284/cb55e68f-866a-3f95-8eca-f4e3c62d2357.jpg[/img]

当然histogram 不仅可以通过类进行数据组织,还可以通过class loader, packages or superclass .来进行数据的组织。

[img]http://dl.iteye.com/upload/attachment/0068/1288/fb33d5a3-0789-3f6c-971d-df08cdf12757.png[/img]

[img]http://dl.iteye.com/upload/attachment/0068/1290/f345bf23-ef30-36bf-b6db-5dfe3d99e0cd.jpg[/img]

[b](2)The Dominator Tree[/b]
列出了堆中最大的对象,第二层级的节点表示当被第一层级的节点所引用到的对象,当第一层级对象被回收时,这些对象也将被回收。这个工具可以帮助我们定位对象间的引用情况,垃圾回收时候的引用依赖关系。

[img]http://dl.iteye.com/upload/attachment/0068/1294/4a58dd79-ba06-3365-8820-f1a404a1761a.jpg[/img]

[b](3)Path to GC Roots[/b]
被JVM持有的对象,如当前运行的线程对象,被systemclass loader加载的对象被称为GC Roots, 从一个对象到GC Roots的引用链被称为Path to GC Roots, 通过分析Path to GC Roots可以找出JAVA的内存泄露问题,当程序不在访问该对象时仍存在到该对象的引用路径。

[img]http://dl.iteye.com/upload/attachment/0068/1296/dac2eff0-4d4b-32f0-aa57-fb58f196c7a1.jpg[/img]

[img]http://dl.iteye.com/upload/attachment/0068/1298/2453eb97-02c8-3cad-8db4-38c8b40e2950.jpg[/img][/size]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值