Mat使用

作者: 少博先生 | 来源:发表于2019-04-05 11:50 被阅读0次

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

    下载安装

    1、MAT下载地址
    2、首先将eclipse安装成功。
    3、把MermoryAnalyzer中的mat文件夹复制到eclipse安装目录的dropins下,重新启动eclipse。查看Window->Preferences,出现Memory Analyzer代表安装mat成功。

    image.png

    模拟使用

    模拟内存溢出

    1、测试方法
    2、配置运行参数
    -Xms10m -Xmx10m
    -XX:+HeapDumpOnOutOfMemoryError
    
    3、执行结果
    内存溢出

    mat分析

    1、mat打开hprof文件
    工程根目录下生成一个hprof文件 File -> Open Heap Dump , 打开刚才生成的hprof文件
    2、内存分析概况
    Shallow Size:

    对象自身占用的内存大小,不包括它引用的对象。
    针对非数组类型的对象,它的大小就是对象与它所有的成员变量大小的总和。当然这里面还会包括一些java语言特性的数据存储单元。
    针对数组类型的对象,它的大小是数组元素对象的大小总和。

    Retained Size:

    Retained Size=当前对象大小+当前对象可直接或间接引用到的对象的大小总和。(间接引用的含义:A->B->C, C就是间接引用)
    换句话说,Retained Size就是当前对象被GC后,从Heap上总共能释放掉的内存。
    不过,释放的时候还要排除被GC Roots直接或间接引用的对象。他们暂时不会被被当做Garbage。

    可参考:https://bjyzxxds.iteye.com/blog/1532937

    3、dominator_tree视图

    该视图以实例对象的维度展示当前堆内存中Retained Heap占用最大的对象,以及依赖这些对象存活的对象的树状结构。

    4、Histogram视图

    该视图以Class类的维度展示每个Class类的实例存在的个数、 占用的 [Shallow内存] 和 [Retained内存] 大小,可以分别排序显示。

    5、Leak Suspects
    6、OQL

    OQl是对象查询语言,和SQL语句很相似,是从堆查询对象的,类相当于表,对象相当于行,对象属性相当于列。


    相关文章

      网友评论

          本文标题:Mat使用

          本文链接:https://www.haomeiwen.com/subject/nquhiqtx.html