MAT分析OOM dump文件方法

本文详细介绍了如何使用Memory Analyzer Tool (MAT) 分析Java OOM dump文件,从明确分析目标和指标,到与其他工具对比,重点解析MAT的大功能模块如直方图、支配树等,以及如何通过自动分析报告找出大对象、内存泄漏等问题。
摘要由CSDN通过智能技术生成

系列文章目录

第一章 JVM 排查问题命令汇总

第二章 MAT分析OOM dump文件方法

第三章 Java服务使用CAT监控导致OOM的分析


目录

1.明确分析目标及分析指标

2.分析工具对比(jvisualvm,jhat,mat)

3.MAT的功能介绍

3.1 大功能模块

3.2小功能(右键或单机)

4.使用方法(只介绍自动分析)

4.1 内存整体使用报告(点击System Overview)

 4.1.1 Histogram 直方图统计

 4.1.2 TOP Consumers 找到大对象

4.1.3内存镜像活跃线程Overreview

4.2 问题内存详情 (点击自动分析页detail )

 4.2.1 Shortest Paths To the Accumulation Point (GC root到聚集点的最短路径,就是持有可能泄漏内存对象的最近一层)

4.2.2 Accumulated Objects in Dominator Tree (对象聚集详情,这个地方我们经常用来看完整的reference chain)

4.2.3 Accumulated Objects by Class in Dominator Tree (这里能找到被聚集的对象实例的类名,可以看到某个类被实例化多少次)

4.2.4  All Accumulated Objects by Class  (比第三个更细 具体到类的属性)

4.2.5 其他

5.总结


1.明确分析目标及分析指标

目标:oom原因

指标:大对象,重复创建对象(最多实例的类),oom的线程,内存泄漏,类加载情况

2.分析工具对比(jvisualvm,jhat,mat)

jvisualvm :jdk自带工具,不过分析不出来啥

jhat :jdk的命令,在命令行中分析,命令较少也分析不出来啥。

mat: eclipse推出的内存分析工具,可以使用插件也可以独立安装,有丰富的功能可以使用。

3.MAT的功能介绍

3.1 大功能模块

Histogram : 直方图,可以查看每个类的实例(即对象)的数量和大小。

Dominator: 支配树,列出Heap Dump中处于活跃状态中的最大的几个对象,默认按 retained size进行排序,因此很容易找到占用内存最多的对象

Top Consumers:按类、类加载器和包分别进行查询,并以饼图的方式列出最大的几个对象

Duplicate Classes: 列出被加载多次的类,结果按类加载器进行分组,目标是加载同一个类多次被类加载器加载。使用该工具很容易找到部署应用的时候使用了同一个库的多个版本

3.2小功能(右键或单机)

list objects:

— with outgoing references : 查看这个对象持有的外部对象引用。
— with incoming references : 查看这个对象被哪些外部对象引用。

show objects by class :

— with outgoing references :查看这个对象类型持有的外部对象引用
— with incoming references :查看这个对象类型被哪些外部对象引用

paths to gc root : 显示不同类型引用(上文中提到的Strong ,soft,weak )到跟节点的路径。
merge shorest path to gc root : 合并最短路径到root节点

java basics:
— classloader 该对象对应的classloader信息 。
— thread details :线程信息
— thread stacks :线程堆栈
— find String : 在这个对象中查询需要的字符串(还不确定,需要再搞下)
— group by : 根据某个字段统计出现的个数

4.使用方法(只介绍自动分析)

打开dump文件,选择自动分析分析完成后自动打开Reports

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值