一、准备工作
分析较大的dump文件(根据我自己的经验2g以上的dump文件就需要使用以下介绍的方法,不然mat会出现oom)需要调整虚拟机参数
找个64位的系统在memoryanalyzer.ini设置-xmx2g
如果是32位的xp可以使用下面的方法进行尝试:
安装jrockit 6.0的jdkmat使用jrockit的jdk来启动-vmd:/program files/java/jrockit-r28.0.0-jre1.6.0_17/bin/jrockit/jvm.dll-vmargs-xmx1700m
二、开始使用mat进行oom分析
第一步,启动mat ,选择file->open heap dump 选择你的dump文件。下面开始等待,mat解析dump文件需要花一些时间,在解析的同时会在硬盘上写入一些解析结果文件,这样下次打开时速度会快很多。有时候mat在解析过程中可能会出现出错的情况,这个时候可以将那些临时文件删除以后重试第一步,如果你的rp够好的话重试也许会解析成功。
第二步,查看内存泄漏分析报表。mat解析完成以后会出现如下图的提示:
因为我们就是为了查找内存泄漏的问题,所以保持默认选项直接点“finish”就可以。
mat会非常直观的展现内存泄漏的可疑点,类似下面的报表可以直接看到某个线程占用了大量的内存
问题的详细分析信息:
第三步,开始寻找导致内存泄漏的代码点。这时往往需要打开对象依赖关系树形视图,点击如图按钮即可。
这时会看到如下视图
这个视图的左边大区域可以看到对象的依赖关系,选中某个对象以后可以在左边小窗口查看对象的一些属性。如果属性的值是一些内存地址你还可以点击工具栏的搜索按钮来搜索具体的对象信息。在进行具体分析的时候mat只是起了帮助你进行分析的工具的功能,oom问题分析没有固定方法和准则。只能发挥你敏锐的洞察力,结合源代码,对内存中的对象进行分析从而找到代码中的bug.
分享到:
相关推荐
Eclipse Memory Analyzer 是一个功能丰富且轻量的 Java 堆内存分析工具,可以用来辅助发现内存泄漏减少内存占用。 使用 Memory Analyzer 来分析生产环境的 Java 堆转储文件,可以从数以百万计的对象中快速计算出对象...
Eclipse Memory Analyzer 是一个功能丰富且轻量的 Java 堆内存分析工具,可以用来辅助发现内存泄漏减 少内存占用。 使用 Memory Analyzer 来分析生产环境的 Java 堆转储文件,可以从数以百万计的对象中快速计算出对 ...
一次使用Eclipse Memory Analyzer分析Tomcat内存溢出.docx
MAT Eclipse Memory Analyzer 中文文档 PDF 共 93 页 MAT Eclipse Memory Analyzer 中文文档 PDF 共 93 页
使用 Eclipse Memory Analyzer 进行堆转储文件分析_files
Eclipse Memory Analyzer是一款基于Eclipse的内存分析工具,mac版,不需要安装Eclipse,可以直接运行,用来分析内存泄漏等问题
Eclipse Memory Analyzer mac 版本 1.8.1 & 安装使用指南
此软件是mat内存分析软件的无需安装版本,点击打开即可使用,Memory Analyzer Version 1.7.0
堆dump分析工具Eclipse Memory Analyzer ,超强大的堆dump分析工具
打开“解压路径\mat\MemoryAnalyzer.exe”后,拖入*.hprof文件即可,亲测可以使用。
EclipseMemoryAnalyzer使用说明书
MAT是分析Java堆内存的一个工具,全称是 The Eclipse Memory Analyzer Tool,用来帮助分析内存泄漏和减少内存消耗。使用MAT分析Java堆快照,可以快速计算出对象的保留大小(Retained Sizes),查找到阻止对象被回收...
EclipseMemoryAnalyzer-x86_64,MemoryAnalyzer-1.7.0.20170613-win32.win32.x86_64.zip
MemoryAnalyzer软件可以帮你进行发现或者分析调试的代码等无法进行修复的问题;支持分析内存问题.;支持监控整个 Java 应用程序的状态与行为.还可以进行读取,使应用程序运行时可以支持让Java 运行时环境的生产
java 内存泄露检测工具 MemoryAnalyzer 堆内存检测 tomcat内存泄露检测 jvm内存泄露检测
Eclipse Memory Analyzer1.8.1&安装使用指南
MAT 软件版本解压后目录内有个MemoryAnalyzer.ini文件,该文件里面有个Xmx参数,该参数表示最大内存占用量,默认为1024m,根据堆转储文件大小修改该参数即可。 1. MemoryAnalyzer.ini中的参数一般默认为-vmargs– ...
对于大型 JAVA 应用程序来说,再精细的测试也难以堵住所有的漏洞,即便我们在测试阶段进行了大量卓有成效的工作,很多问题还是会在生产环境下暴露出来,并且很难在测试环境中进行重现。JVM 能够记录下问题发生时系统...
MemoryAnalyzer内存分析工具,内置插件,可分析IBM JVM(openj9)上的heap dump 文件phd格式