mat分析dump分析_使用Eclipse Memory Analyzer Tool(MAT)分析线上故障(一)

本文介绍了如何使用Eclipse Memory Analyzer Tool(MAT)分析内存问题,特别是关注从对象到GC Roots的路径和Merge Shortest Paths to GC roots。MAT通过Histogram视图、Thread Overview和Leak Suspects报告帮助识别内存泄露,强调了从单个对象到GC Roots路径的重要性,并提供了实际案例分析。
摘要由CSDN通过智能技术生成

来源:  https://sourl.cn/ggYpYX

前言

    Eclipse Memory Analyzer Tool(MAT)是一个强大的基于Eclipse的内存分析工具,可以帮助我们找到内存泄露,减少内存消耗。

    工作中经常会遇到一些内存溢出、内存泄露等问题,同时还可能导致CPU使用率也很高,因为在频繁的进行GC垃圾回收,这时候就需要分析导致问题的原因,MAT是一个比较好用的工具,故在此总结一下个人觉得比较有用的一些MAT相关概念。

4e49be918d781986df39180a9c3acfb3.gif  1、Overview

42281f4f6d6cc04cb4e029424fc06c92.png

通过  File >  Open Heap Dump... 打开dump文件,最先展示就是Overview概述界面,可以对Heap Dump有一个大致的了解,并提供了一些视图、报告的入口,这些视图、报告都对分析Heap Dump很有帮助,后续会介绍。 鼠标移动到饼图某个区域上方,在左侧会看到对象的详细信息,如左上方的  Inspector 展示了如:对象hashcode、类名、包名、Class类对象、父类、类加载器、shallow size、retained size、GC root类型。左下方展示了对象的一些属性信息、类层级信息。 4e49be918d781986df39180a9c3acfb3.gif  2、Histogram视图  以下方式可以打开Histogram柱状图: (1)点击Overview页面Actions区域内的“Histogram视图”链接

8869aea4b9242161149b9d1712881f3b.png

(2)点击工具栏的“histogram按钮”

d8d217aa73706309b82cd7d23cb0915c.png

Histogram视图:

2654e62c8525389312c670b53db784e8.png 

该视图以Class类的维度展示每个Class类的实例存在的个数、 占用的 [Shallow内存] 和 [Retained内存] 大小,可以分别排序显示。 从Histogram视图可以看出,哪个Class类的对象实例数量比较多,以及占用的内存比较大,Shallow Heap与Retained Heap的区别会在后面的概念介绍中说明。 不过,多数情况下,在Histogram视图看到实例对象数量比较多的类都是一些基础类型,如char[](因为其构成了String)、String、byte[],所以仅从这些是无法判断出具体导致内存泄露的类或者方法的,可以使用 List objects 或 Merge Shortest Paths to GC roots 等功能继续钻取数据。如果Histogram视图展示的数量多的实例对象不是基础类型,是有嫌疑的某个类,如项目代码中的bean类型,那么就要重点关注了。 4e49be918d781986df39180a9c3acfb3.gif  3、Dominator Tree(支配树)视图  以下方式可以打开Dominator Tree视图: (1)点击Overview页面Actions区域内的“Dominator Tree视图”链接

fa10a31e13577140b0a2586280bdf611.png

(2)点击工具栏的“Dominator Tree按钮” ,为整个堆打开一个支配树视图

86d8097c9573bd174698f17c7c35190f.png

Dominator Tree(支配树)视图:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值