java+内存泄露+mat_使用MAT分析内存泄露

一定要注意mat版本,用MemoryAnalyzer-1.4.0.20140604-win32.win32.x86版本才可以。其他版本估计要依赖于高版本的jdk

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

工作中经常会遇到一些内存溢出、内存泄露等问题,同时还可能导致CPU使用率也很高,因为在频繁的进行GC垃圾回收,这时候就需要分析导致问题的原因,MAT是一个比较好用的工具,但刚开始使用时对于其提供的一些功能还是不太了解,故在此总结一下个人觉得比较有用的一些MAT相关概念,其它功能暂时还未用到或者还没有理解使用方法,后续再补充。

以下是本文的目录大纲:

视图 & 功能

若有不正之处请多多谅解,欢迎批评指正、互相讨论。

请尊重作者劳动成果,转载请标明原文链接:

视图 & 功能

1、Overview

c7fcaf21c838910bd70425ef4d7b9d9d.png

通过 File > Open Heap Dump... 打开dump文件,最先展示就是Overview概述界面,可以对Heap Dump有一个大致的了解,并提供了一些视图、报告的入口,这些视图、报告都对分析Heap Dump很有帮助,后续会介绍。

鼠标移动到饼图某个区域上方,在左侧会看到对象的详细信息,如左上方的 Inspector 展示了如:对象hashcode、类名、包名、Class类对象、父类、类加载器、shallow size、retained size、GC root类型。左下方展示了对象的一些属性信息、类层级信息。

2、Histogram视图

以下方式可以打开Histogram柱状图:

(1)点击Overview页面Actions区域内的“Histogram视图”链接

ba941a69c6618d245b416677cb1cb8b1.png

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

0f314967bbbc9c65600264022be2f093.png

Histogram视图:

e5944251e4fe58e512fe60fbc7898371.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类型,那么就要重点关注了。

3、Dominator Tree(支配树)视图

以下方式可以打开Dominator Tree视图:

(1)点击Overview页面Actions区域内的“Dominator Tree视图”链接

afd7b945e2f39b4c295bfce857f23bae.png

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值