使用前一些有用的链接

下载

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:

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

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

  2. 关于Histogram: 右键某个object,可以做无数分析操作。

    1. 可以精确计算某个对象的retain size: 选中某个类,然后选择计算精确的retain size大小即可

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

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

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

  4. 关于 Path to GC Roots: gc root 是一些被JVM自身管理的存活对象,这些内容包括当前运行的线程对象,调用栈,被类加载器加载的类等等。

    Path to gc roots 表明对象之所以不被回收的原因。路径可以协助分析Java内存泄露。内存泄漏是因为程序不再使用这个对象,但是它还在被引用。

  5. 关于 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满足的条件可以参考参考文件中的链接。

参考文献

http://toolkit.globus.org/toolkit/testing/tools/docs/help/sizes.html 讲解shallow size 与 retained size

http://xmlandmore.blogspot.com/2014/01/eclipse-mat-understand-incoming-and.html incoming and outgoing reference

http://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.mat.ui.help%2Fconcepts%2Fgcroots.html gc root

results matching ""

    No results matching ""