内存分析工具(MAT)介绍(一)-入门

  MAT即Memory Analyse Tool 是java内存分析的利器。基于这个工具,我们可以分析定位很多疑难问题。鉴于这个工具实用性非常强,介绍一下该工具的使用。

MAT使用场景

  MAT主要就是用来分析内存的问题,下面2点就是MAT的使用场景。

  • 定位内存泄漏问题、gc异常问题
  • 内存优化,分析内存使用合理性,减少内存浪费

因为dump文件里面有线程信息,所以MAT也能看到线程调用栈以及局部变量,对分析一些线程问题也有帮助。

MAT入门

  首先dump一份jvm内存文件下来,jmap -dump:format=b,file=heapdump.phrof pid(可以指定live选项如果指定了live选项则在dump之前会进行一次Full GC,只会dump下来存活的对象)。用MAT打开dump文件,首先会得到一份报告,如下图:
MAT概图
  工作区右边上面部分是dump下来的内存大小、类的数量、对象的数量、类加载器的数量以及非可达对象的直方图链接(非可达对象即在下一次GC时会回收的对象)。右边下面部分的饼图是大对象的情况,鼠标移动到其中一块,昨边会出现这个对象的详细情况。mat计算对象的大小从2个维度计算的:

  • shallow size : 对象本身占用堆空间的大小
  • retained size: 对象及其控制的对象占用堆空间的大小总和。

这个饼图里面大对象是以retained size作为依据的。

  点击菜单按钮"Leak Suspects"得到一份内存疑似泄漏的报告:
生成内存泄漏报告
内存泄漏报告
用户可以重点怀疑报告中的类,调查一下系统中的类是否存在泄漏的可能。所谓内存泄漏就是指那些代码中已经用不到,但是GC Root可达的对象。

下一节介绍几个重要的概念…

MAT主要概念

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值