zoukankan      html  css  js  c++  java
  • MAT内存分析工具的使用

    一、概述

    Memory AnalyzerTool是一个快速且功能丰富的Java堆分析器,可帮助您查找内存泄漏并减少内存消耗。使用Memory Analyzer分析具有数亿个对象的高效堆转储,快速计算对象的保留大小,查看谁阻止垃圾收集器收集对象,运行报告以自动提取泄漏嫌疑者。

    二、工具使用

    1)heap dump文件介绍

    Heap Dump,它也叫堆转储文件,是java进程在某个时间内的快照。它在触发快照的时候保存了很多信息:java对象和类信息。通常在写Heap Dump文件前会触发一次Full GC。

    2)获取heapdump文件

    通过jvisualVM工具中的jmx连接,在项目运行之前和运行之后,分别右击生成堆dump文件*. hprof文件,并将其下载到本地;用于mat分析;

    3)mat内存分析工具使用

    l  打开heapdump文件

    通过菜单【file ---open heapdump】打开heapdump文件,并生成多个分析结果文件;

    l  Overview页签

    展示进程当前内存的使用情况信息

     

    l  Histogram

    点击overview页签下方的histogram,可打开histogram页签,展示内存中的对象,对象的个数及大小;

    Class Name : 类名称,java类名

    Objects : 类的对象的数量,这个对象被创建了多少个

    Shallow Heap :一个对象内存的消耗大小,不包含对其他对象的引用

    Retained Heap :是shallow Heap的总和,也就是该对象被GC之后所能回收到内存的总和;

    选择其中某个对象,右击打开菜单选择 list objects ->with incoming refs 将列出该类的实例:

            

    快速找出某个实例没被释放的原因,可以右健 Path to GC Roots–>exclue all phantom/weak/soft etc. reference;

    l  Leak Suspects

    点击【overview】页签下方的leaksuspects,打开leaksuspects页签,自动分析内存内存泄漏的原因,可以直接定位到Class和行数;

     

    l  Dominator Tree

    点击【OverView】页签下方的Domainator,可打开domainator页签;列出线程的树结构,及线程下面对象占用内存的空间。

     

      

    l  Top Comsumers

    点击【OverView】页签下方的TopComsumers,打开TopComsumers页签;通过图形列出内存使用最大的对象;

     

  • 相关阅读:
    设计模式整理_单例设计模式
    设计模式整理_工厂模式
    设计模式整理_装饰者模式
    设计模式整理_观察者模式
    设计模式整理_策略模式
    JavaSE复习_7 异常
    JavaSE复习_6 枚举类
    JavaSE复习_5 Eclipse的常见操作
    pta编程题19 Saving James Bond 2
    ImportError: No module named PIL
  • 原文地址:https://www.cnblogs.com/wzl0916/p/12928704.html
Copyright © 2011-2022 走看看