码迷,mamicode.com
首页 > 其他好文 > 详细

Analyzer tool(MAT)分析JVM内存泄露案例

时间:2018-10-02 13:59:13      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:类加载   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,过滤
技术分享图片
然后就很直观的分析出什么导致的了,然后优化。

Analyzer tool(MAT)分析JVM内存泄露案例

标签:类加载   src   blog   业务   位置   roc   mina   jvm   原因   

原文地址:http://blog.51cto.com/renzhiyuan/2288355

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!