zoukankan      html  css  js  c++  java
  • eclipse内存分析工具MAT

    Eclipse -> help-> install new software

    进入 安装页面 点击add按钮 输入

    http://download.eclipse.org/mat/1.6/update-site/

     

     

      安装完成

     

     

    进入如下视图:

     

    点击file-> open heap dump 出现如下视图 ,选择相应的hprof

     

    打开heapDumps文件,就可以看到MAT给出了overview page

    从上图可以看到它的大部分功能。
    1. Histogram可以列出内存中的对象,对象的个数以及大小。
    2. Dominator Tree可以列出那个线程,以及线程下面的那些对象占用的空间。
    3.Top consumers通过图形列出最大的object。
    4.Leak Suspects通过MA自动分析泄漏的原因。
     
    Histogram如下图:
    Objects:类的对象的数量。
    Shallow size:就是对象本身占用内存的大小,不包含对其他对象的引用,也就是对象头加成员变量(不是成员变量的值)的总和。

    Retained size:是该对象自己的shallow size,加上从该对象能直接或间接访问到对象的shallow size之和。换句话说,retained size是该对象被GC之后所能回收到内存的总和。

    (1)histogram 
    列出了有每个种有多少实例,每种类型的实例集合的 shallow size 和  retained size . shallow size指的是对象所消耗的内存大小,如每个对象引起消耗4个字节,或者8个字节,取决于你的操作系统(32位,还是64位), retained size的概念依赖于Retained set 的概念,Retained set 指的是当对象X被回收时,所有被垃圾回收器移除的对象集合, 
    Retained size 即是Retained set所保持的内存大小。 

    当然histogram 不仅可以通过类进行数据组织,还可以通过class loader, packages or superclass .来进行数据的组织。

    (2)The Dominator Tree 
    列出了堆中最大的对象,第二层级的节点表示当被第一层级的节点所引用到的对象,当第一层级对象被回收时,这些对象也将被回收。这个工具可以帮助我们定位对象间的引用情况,垃圾回收时候的引用依赖关系。

    Listobjects->Withincomingreferences。这时会列出所有可疑类,右键点击某一项,并选择PathtoGCRoots->excludeweak/softreferences,会进一步筛选出跟程序相关的所有有内存泄露的类。据此,可以追踪到代码中的某一个产生泄露的类。 
    具体的分析方法在MAT的官方网站和客户端的帮助文档中有十分详尽,使用MAT分析内存查找内存泄漏的根本思路,就是找到哪个类的对象的引用没有被释放,找到没有被释放的原因,也就可以很容易定位代码中的哪些片段的逻辑有问题了

    (3)Path to GC Roots 
    被JVM持有的对象,如当前运行的线程对象,被systemclass loader加载的对象被称为GC Roots, 从一个对象到GC Roots的引用链被称为Path to GC Roots, 通过分析Path to GC Roots可以找出JAVA的内存泄露问题,当程序不在访问该对象时仍存在到该对象的引用路径。 

  • 相关阅读:
    整理了一份FAQ,新手看一下
    分享:pythonbitstring 3.1.2 发布
    分享:TokuDB v7 发布,并宣布全面开源
    在美国学CS能挣多少钱?美国IT公司标准 offer package详细数字及绿卡政策 | 美国留学申请与就业找工作咨询博客|Warald|一亩三分地论坛
    写的split带改进
    分享:一个多进程并发执行程序ps命令 ls命令
    分享:vi/vim使用进阶: 指随意动,移动如飞 (一)
    waning rm i rm rvfi
    分享:C++中头文件、源文件之间的区别与联系
    分享:神奇的动归状态转移方程——最优子序列
  • 原文地址:https://www.cnblogs.com/zhuqq/p/5996450.html
Copyright © 2011-2022 走看看