MAT(Memory Analyzer tool)使用
当线上环境出现OOM/内存泄漏了,怎么办?
让虚拟机在发生内存溢出时 Dump 出当前的内存堆转储快照,配置-XX:+HeapDumpOnOutOfMemoryError,
当出现OOM时,分析dump下来的hprof文件,一般使用MAT辅助查看。
安装方式:
1 eclipse安装MAT插件;安装说明:https://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-ma/index.html
2 独立版本(建议),下载地址:http://www.eclipse.org/mat/downloads.php,下载解压后就可以直接用。

分析一个堆转储文件需要消耗堆空间,需要分配内存,
MemoryAnalyzer.ini中的参数一般默认为-vmargs– Xmx1024m;
当dump文件的大小大于配置的1024m,会报错;
方式1:修改启动参数 MemoryAnalyzer.exe-vmargs -Xmx4g
方式2:编辑文件 MemoryAnalyzer.ini,修改/添加参数 -vmargs– Xmx4g
模拟产生hprof文件:
public class OOMTest {
public static void main(String[] args) {
List<Person> list1 = new ArrayList<>();
for (Long i = 0L; i < 1000L; i++) {
list1.add(new Person(i, i.toString(), i.toString()));
}
List<Shop> list2 = new ArrayList<>();
for (long i = 0L; i < 256L * 1024L * 1024L; i++) {
list2.add(new Shop(i));
}
}
static class Person {
private Long id;
private String name;
private String idcard;
public Person(Long id, String name, String idcard) {
this.id = id;
this.name = name;
this.idcard = idcard;
}
}
}
修改相关参数,这里加上了 -XX:+HeapDumpOnOutOfMemoryError -Xmx256M

执行后:

dump下来的hrof文件在项目工程目录下(或指定导出目录:-XX:HeapDumpPath)。
打开MAT工具,File >> Open Heap Dump...

通过分析结果,很容易知道哪些对象占用了大量的堆内存。
MAT会把分析结果打包成zip包,解压后通过浏览器就可以访问。

打开对象依赖关系树形视图

相关链接:
http://seanhe.iteye.com/blog/898277
http://www.blogjava.net/rosen/archive/2010/06/13/323522.html
https://blog.csdn.net/rachel_luo/article/details/8992461
MAT(Memory Analyzer tool)使用的更多相关文章
- 使用MAT(Memory Analyzer Tool)工具分析dump文件--转
原文地址:http://gao-xianglong.iteye.com/blog/2173140?utm_source=tuicool&utm_medium=referral 前言 生产环境中 ...
- MAT(Memory Analyzer Tool)工具入门介绍
1.MAT是什么? MAT(Memory Analyzer Tool),一个基于Eclipse的内存分析工具,是一个快速.功能丰富的JAVA heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗 ...
- MAT(Memory Analyzer Tool)工具入门介绍(转)
1.MAT是什么? MAT(Memory Analyzer Tool),一个基于Eclipse的内存分析工具,是一个快速.功能丰富的JAVA heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗 ...
- MAT Memory Analyzer Tool 插件安装(图解)
MAT Memory Analyzer Tool 插件安装(图解) 原文地址 @author YHC 前段时间做了一个项目,Exception in thread "main" j ...
- 【转】MAT(Memory Analyzer Tool)工具入门介绍
1.MAT是什么? MAT(Memory Analyzer Tool),一个基于Eclipse的内存分析工具,是一个快速.功能丰富的JAVA heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗 ...
- 内存分析工具-MAT(Memory Analyzer Tool)
内存分析工具-MAT(Memory Analyzer Tool) 首先查看如下代码,main函数中有一个成员变量map,map里被循环放入对象Hanson,hanson持有姓名和age还有friend ...
- Android 内存分析工具 MAT(Memory Analyzer Tool)
如果使用DDMS确实发现了我们的程序中存在内存泄漏,那又如何定位到具体出现问题的代码片段,最终找到问题所在呢?如果从头到尾的分析代码逻辑,那肯定 会把人逼疯,特别是在维护别人写的代码的时候.这里介绍一 ...
- 转载:MAT Memory Analyzer Tool使用示例
地址:http://blog.csdn.net/yanghongchang_/article/details/7711911 以下是一个会导致java.lang.OutOfMemoryError: J ...
- MAT(Memory Analyzer Tool)内存分析工具的使用
开发.应用中老是会遇到OutOfMemory异常,而且常常是过一段时间内存才被吃光,这里可以利用java heap dump出jvm内存镜像,然后再对其进行分析来查找问题. 平常利用jmap -dum ...
- [性能测试]:内存泄漏以及MAT(Memory Analyzer Tool)工具使用分析
一.今天在查看服务器时候,发现内存使用率直接就到99%了, 二.用ps -uaxw查看一下,每个占用内存较多的进程情况: 三,挑出可疑的进程,生成dump文件: jmap -dump:format=b ...
随机推荐
- phpcmsV9搜索分页数量
phpcmsV9搜索结果自定义控制分页条数,具体方法: 打开搜索模型文件夹phpcms/modules/search/index.php, 找到第85行: $result = $this->db ...
- CSS命名规范参考及书写注意事项
CSS书写顺序 *{ /*显示属性*/ display position float clear cursor … /*盒模型*/ margin padding width height /*排版*/ ...
- 老齐python-基础1
1.基本对象类型 1.1数: >>> 3 #基本数字 3 >>> 3333 3333 >>> 3.222 3.222 >>&g ...
- Linux bash shell 入门
https://www.cnblogs.com/cosiray/archive/2012/03/02/2377099.html
- jquery 实现点击颜色切换
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- lua语法基本
lua的下载 http://luabinaries.sourceforge.net/点击所要下载的版本比如我下的是5.3.3https://sourceforge.net/projects/luabi ...
- npm笔记和bower
生成package.json文件的方式就是dos下进入该文件夹,然后执行 npm init Bower简单点儿说就是通过nodejs直接下载GitHub上的js源码 首先你得有node,这里就不多做介 ...
- 数据科学:Pandas 和 Series 的 describe() 方法
一.Pandas 和 Series 的 describe() 方法 1)功能 功能:对数据中每一列数进行统计分析:(以“列”为单位进行统计分析) 默认只先对“number”的列进行统计分析: 一列数据 ...
- 分布式缓存系统 Memcached slab和item的主要操作
上节在分析slab内存管理机制时分析Memcached整个Item存储系统的初始化过程slabs_init()函数:分配slabclass数组空间,到最后将各slab划分为各种级别大小的空闲item并 ...
- php判断是否为ajax请求
先说前端使用 jQuery 时怎么区分: jQuery 发出 ajax 请求时,会在请求头部添加一个名为 X-Requested-With 的信息,信息内容为:XMLHttpRequest 在后端可以 ...