标签:类加载 src blog 业务 位置 roc mina jvm 原因
1、监控目的2、常用分析工具
3、分析案例-MAT
MAT 介绍及分析:
启动MAT, 然后选择菜单项 File- Open Heap Dump 来加载需要分析的堆转储文件。文件加载完后,可以看到如图 1所示的界面:
从图1可以看到他的大部分功能:
? Histogram 可以列出内存中的对象,对象的个数及大小
? Dominator Tree 可以列出哪个线程以及线程执行的哪些对象占用空间
? Top consumers 通过图形列出最大的object
? Leak Suspects 通过MA自动分析泄漏的原因。
Histogram 如图2:
Objects:类的对象数量
Shallow size:对象本身占用内存的大小,不包含对其他对象的引用,也就是对象头加成员变量(不是成员变量的值)和总和。:
Retained size:是该对象自己的shallow size+ 从该对象直接或间接访问到对象的shallow size之和。换句话说,retained size 是该对象被GC之后所能回收到内存的总和。
从图2 可以发现,java.util.HashMap 类的对象占用的很多的空间。
Dominator Tree 如图3:
从图3 中可以发现com.csii.ibs.lc.ClusterOnlineUserRegistry 占了很多内存空间
Top Comsumers 如图4:
显示内存中最大的对象有哪些,及其对应的类是哪些,类加载器classloader是哪些。有些时候我们在这里可以看到代码泄漏的位置。
4、案例一则:
今天线上业务JVM监控出现有内存泄露情况
选择 Path To GC Roots ->exclude weak references,过滤
然后就很直观的分析出什么导致的了,然后优化。
标签:类加载 src blog 业务 位置 roc mina jvm 原因
原文地址:http://blog.51cto.com/renzhiyuan/2288355