MAT基础

下载

http://eclipse.org/mat/downloads.php

基础手册

http://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.mat.ui.help%2Fgettingstarted%2Fbasictutorial.html&cp=49_1_0

概要:

1. 关于overview:

      右侧饼状图中包含了占用内存比较大,或者对象数目比较多的对象。点击某一个分片,会有其对应的shallow size, retained size.
      左侧 inspector 里面包含了当前对象的一些概述信息,以及当前对象中存储了哪些属性、类信息等


overview.png

右下侧,是一些常用的分析操作(Action, Report, Step by step)。

2. 关于Histogram:

      右键某个object,可以做无数分析操作。
      可以精确计算某个对象的retain size: 选中某个类,然后选择计算精确的retain size大小即可


retainSize.png

选中某个类的条目,然后可以做很多的事情:


image.png

另外可以按照类加载器、包、父类进行汇总
image.png

      关于 Dominator tree: 展示了heap dump 中 的一些大对象。下一级展示了如果当前节点被回收,会有哪些incoming references 会被回收。支配树可以表明哪些对象使某个对象存活。另外,这棵树可以按照类加载器或者组件或者包去进行汇总,这对于分析来说非常有利。

      关于 Path to GC Roots: gc root 是一些被JVM自身管理的存活对象,这些内容包括当前运行的线程对象,调用栈,被类加载器加载的类等等。
      Path to gc roots 表明对象之所以不被回收的原因。路径可以协助分析Java内存泄露。内存泄漏是因为程序不再使用这个对象,但是它还在被引用。


image.png

      关于 The Leak Report: MAT 可以分析heap dump ,然后进行泄露猜测。 比如猜测比较大的对象。详细可以参考 “自动heap dump 分析:轻松发现泄露” 一文。

名词解释

  • Shallow size :对象自身占用空间的大小。对于非数组对象主要靠自身属性的数量以及种类; 对于数组主要以依赖数组长度,以及里面存储的元素。
  • Retained size : 某个对象被GC,这个过程中所有被回收对象占用内存之和。
  • incoming reference: These references have kept the object alive and prevented it from being garbage collected . 两个使用incoming reference的地方: Dominator 和 path to gc root .
  • outgoing reference: 当前对象引用了哪些对象。
  • GC Roots: 一些堆外可达的对象。GC root满足的条件可以参考参考文件中的链接。

参考文献

讲解shallow size 与 retained size
incoming and outgoing reference
gc root

你可能感兴趣的:(MAT基础)