zoukankan      html  css  js  c++  java
  • Eclipse MAT 安装及使用

    Eclipse MAT安装有时候dump下来的.hprof文件太大,用eclipse解析不了,就要用独立版的MAT来解析了,不过独立版默认也无法解析太大的文件,这就要我们手动给MAT分配更大的内存给它使用了)

    1. 打开Eclipse - >help - > Eclipse Marketplace

      Eclipse安装MAT插件
    2. 点击install,等待下面的进度条加载完毕后,勾选全部,点击Next

      Eclipse安装MAT插件
    3.  同意协议后,点击Finish就开始安装MAT了

      Eclipse安装MAT插件

    直接输入URL安装 方法/步骤2

    1.   打开Eclipse - >help - > Install New Software
    2.   在work with输入图中下载地址,勾选Memory  Analyzer for Eclipse IDE选项
      Eclipse安装MAT插件
    3.   若没有勾选Memory  Analyzer for Eclipse IDE选项,点击地址栏旁边的Add,在location里输入以上地址,点击OK即可。

     

     安装完成后提示重启Eclipse,重启后打开window - > open perspective,看到Memory Analysis证明安装成功。
    Eclipse安装MAT插件

    这里写图片描述

     有时候dump下来的.hprof文件太大,用eclipse解析不了,就要用独立版的MAT来解析了,不过独立版默认也无法解析太大的文件,这就要我们手动给MAT分配更大的内存给它使用了。如下图,打开箭头指向的文件,

    T使用

    导入

    File -> Import -> Other -> Heap Dump 然后选择Dump文件的路径,选择文件进行导入

    界面

    • Histogram可以列出内存中的对象,对象的个数以及大小。
    • Dominator Tree可以列出那个线程,以及线程下面的那些对象占用的空间。
    • Top consumers通过图形列出最大的object。
    • Leak Suspects通过MA自动分析泄漏的原因。

    名词解释

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

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

    OOM解决思路

    • 只要有溢出,时间久了,溢出类的实例数量或者其占有的内存会越来越多,排名也就越来越前,通过多次对比不同时间点下的Histogram图对比就能很容易把溢出类找出来。
    • 通 过Histogram视图或者Dominator Tree视图,找到疑似溢出的对象或者类后,选择Path to GC Roots或者Merge Shortest Paths to GC Roots,这里有很多过滤选项,一般来讲可以选择exclude all plantom/weak/soft etc. references。这样就排除了虚引用、弱引用、以及软引用,剩下的就是强引用。从GC上说,除了强引用外,其他的引用在JVM需要的情况下是都可以 被GC掉的,如果一个对象始终无法被GC,就是因为强引用的存在,从而导致在GC的过程中一直得不到回收,因此就内存溢出了。
    • 接下来就需要直接定位具体的代码,看看如何释放这些不该存在的对象,比如是否被cache住了,还是其他什么原因。
    • 找到原因,清理干净后,再对照之前的操作,看看对象是否还再持续增长,如果不在,那就说明这个溢出点被成功的堵住了。
    • 最后用jstat跟踪一段时间,看看Old和Perm区的内存是否最终稳定在一个范围内,如果长时间稳定在一个范围,那溢出的问题就解决了,如果还再继续增长,那继续用上述方法,看看是否存在其他代码的溢出点,继续找出,将其堵住。

    说明参考:

    https://www.cnblogs.com/loong-hon/p/10475143.html

    测试参考:

    https://blog.csdn.net/wuzhangweiss/article/details/78334711

  • 相关阅读:
    2020/11/15助教一周小结(第十一周)
    神经网络--理解
    案例一:鸢尾花数据的分类
    TF2基础知识
    软件工程助教工作总结
    软工课程改进建议
    2020-12-27 助教一周小结(第十七周)
    2020-12-20 助教一周小结(第十六周)
    2020-12-13 助教一周小结(第十五周)
    2020-12-06 助教一周小结(第十四周)
  • 原文地址:https://www.cnblogs.com/renpei/p/13826481.html
Copyright © 2011-2022 走看看