eclipse java 性能分析工具_Java堆分析器 - Eclipse Memory Analyzer Tool(MAT)

Eclipse Memory Analyzer (MAT) 是一个强大的Java内存分析工具,用于分析heap dump文件以发现内存泄露。本文介绍了MAT的基础概念如Shallow Size和Retained Size,以及关键功能如Inspector区域、Overview、Histogram、Dominator Tree和Top Consumers视图。MAT通过饼图展示对象的内存占用,提供GC Roots路径分析,帮助定位内存问题。
摘要由CSDN通过智能技术生成

Java堆(heanp dump)文件是一个纯二进制文件,咱们用肉眼去看肯定是不现实的。所以咱们得借助特定的堆分析器来对dump文件做相应的分析。这里我们选用Eclipse Memory Analyzer(MAT)来作为heap dump文件的分析工具。接下来咱们对MAT工具做一个简单的介绍。方便咱们后续分析Java堆(heap dump)

Eclipse Memory Analyzer Tool(简称MAT)是一个非常强大的的内存分析工具,可以帮助我们分析堆内存,找到内存泄露的地方,减少内存消耗。MAT除了可以作为Eclipse的插件使用。官方也提供了独立的安装版本,我们用IDEA用的比较多,所以使用独立的安装版本,直接进入下载页面 https://www.eclipse.org/mat/downloads.php ,下载适合自己的版本。为了方便大家我这里提前下载了一份Window 64位的安装包 https://download.csdn.net/download/wuyuxing24/12302636

在介绍MAT工具之前我们先介绍几个常用术语。在MAT工具中这几个术语经常出现:

Shallow Size: 对象自身占用的内存大小。

Retained Size: 对象本身的Shallow Size + 该对象直接或间接引用到的对象的Shallow Size。(也就是说Retained Size就是该对象被GC之后所能回收的内存的总和)

GC Roots: 是一组必须活跃的引用。GC会收集那些不是GC Roots且没有被GC roots引用的对象。基本思路就是通过一系列名为GC Roots 的对象作为起始点开始向下搜索。如果一个对象到GC Roots没有任何引用链相连时,则说明此对象不可用。换句话说就是能被遍历到的(可到达的)对象就被判定为存活,没有被遍历到的就自然被判定为死亡。

哪些对象可以作为Gc Roots的对象:

虚拟机(栈帧中的本地变量表)中引用的对象

方法区中类静态属性引用的对象

方法区中常量引用的对象

本地方法栈中JNI(即一般说的native方法)中引用的对象

de989b94ca3a

image.png

一 MAT结构介绍

de989b94ca3a

MAT.png

1.1 区域一:Inspector区域

用于展示指定对象的详细信息(选定一个对象的时候),从上到下依次是:内存地址、加载器名称、包名、对象名称、对象所属类的父类、对象所属类的加载器对象对象的堆内存大小(shallow size)、保留大小(retained size)、gc roots信息。

1.2 区域二:Inspector区域下方的区域

展示对象的一些属性信息、类层级信息。

1.3 区域三:常用工具栏区域

常用工具按钮从左到右依次是:概览(Overview)、类直方图(Histogram)、支配树(Dominator Tree)、OQL查询、线程视图、报告相关、详细功能(提供了一些更细致的分析能力)。

1.4 区域四:功能视图区域

根据选择的功能不同,该区域显示对应功能的详细信息。比如我们想看Overview信息(点击区域三常用工具栏的第一个按钮)该区域就会展示heap dump Overview对应的信息。

二 MAT视图,功能

2.1 Overview视图

de989b94ca3a

MAT-Actions-Overview.png

进入Overview视图

使用MAT打开一个heap dump文件,解析完成后,默认就会进入Overview视图页面。

工具栏中点击Overview按钮(区域三常用工具栏的第一个按钮)展示Overview对应的信息。

de989b94ca3a

image.png

Overview视图使用

Overview视图界面包括两个部分:一个是对heap dump文件的一个大致的分析,包括占用内存大小,类个数,对象个数,类加载器个数,及用饼图的方式展示对象retained size信息、另一个是提供了一些常用的入口,包括视图入口(Actions)、常用的分析报告入口(Reports)、MAT使用教程入口(Step By Step)]。

关于Overview视图区域,我们得关注点应该放在饼图上(根据retained size 对所有对象做排序,使用拼图演示结果)。我们可以方便的看到哪些对象的ratained size比较大(如果某个对象的retained size特别大。我们就要特别小心了,可能有问题了)。当我们鼠标点击每个饼图区域(对象)的时候,会弹出一个菜单,我们还可以查看相应对象的详细信息。这个菜单包含的额内容有:

de989b94ca3a

点击Overview饼

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值