第一次使用mat

简介

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

下载地址

1.官方地址一直没成功 https://www.eclipse.org/mat/downloads.php 

2. 个人链接:https://pan.baidu.com/s/1dMpxYVw3Wr8p5llix5znag 提取码:dsj7

Heap Dump

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

  • 通过OOM获取,即在OutOfMemoryError后获取一份HPROF二进制Heap Dump文件,可以在jvm里添加参数:
-XX:+HeapDumpOnOutOfMemoryError
  • 主动获取,即在虚拟机添加参数如下,然后在Ctrl+Break组合键即可获取一份Heap Dump
-XX:+HeapDumpOnCtrlBreak
  • 使用HPROF agent

       使用Agent可以在程序执行结束时或受到SIGOUT信号时生成Dump文件。配置在虚拟机的参数如下:

-agentlib:hprof=heap=dump,format=b
  • jmap 可以在cmd里执行,命令如下:
jmap -dump:format=b file=<文件名XX.hprof> <pid>
  • 使用JConsole
  • 使用Memory Analyzer Tools的File -> Acquire Heap Dump功能

MAT 用来做什么

  • 找出内存泄漏的原因
  • 找出重复引用的类和jar
  • 分析集合的使用
  • 分析类加载器

MAT使用介绍

  • 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 :

用这个方法可以快速找到某个对象的 GC Root,一个存在 GC Root的对象是不会被 GC回收掉的.

  • Leak Suspects

这是最喜欢用的,自动分析内存内存泄漏的原因,可以直接定位到Class,且行数。

直接点击进去即可看到定位:

  • Dominator Tree

    列出线程的树结构,及线程下面对象占用内存的空间

  • Top Comsumers

    通过图型列出最大的Object

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值