利用JMAP+MAT分析Java Heap Dump
标签: javaoutofmemoryerrorjvmfile
2012-03-29 16:47 3340人阅读 评论(1) 收藏 举报
如果你的Heap Dump文件超过了几百MB,那就不要再寄希望于jhat了,因为jhat需要数倍于dump文件的内存。这个时候你可以用MAT(Memory Analyzer),用MAT你可以在有2GB可用内存的机器上分析大约1GB左右的Dump文件。
生成Heap Dump文件的方法:
JMAP(Java Memory Map)
方法一:让运行中的JVM生成Dump文件
/usr/java/jdk/bin/jmap -F -dump:format=b,file=/path/to/heap/dump/heap.bin PID
方法二:让JVM在遇到OOM(OutOfMemoryError)时生成Dump文件
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/heap/dump
用jhat分析Dump文件
注:只有在Dump文件比较小的时候才适合用jhat分析Dump文件
jhat(Java Heap Analysis Tool)
jhat -stack false -refs false -J-Xmx2g /path/to/heap/dump/heap.bin
用MAT分析Dump文件
MAT(Memory Analyzer)
http://www.eclipse.org/mat/
安装MAT插件
分享到:
相关推荐
总的来说,heapdump分析是Java性能调优的重要手段,它可以帮助我们理解内存使用状况,找到性能瓶颈,进而优化代码和配置,提升系统的稳定性和效率。正确使用heapdump工具和相关的分析资源,是每个Java开发者必备的...
3. 使用 EclipseMAT 工具来分析输出的堆 heap 信息,例如:File -> Load Heap Dump -> 选择输出的堆 heap 文件。 4. 在 EclipseMAT 中,可以看到详细的内存使用情况,包括对象的数量、大小、引用关系等信息。 5. ...
本文将详细讲解如何使用`jmap`中的`-dump:format=b,file=heapdump.hprof`选项来生成堆栈文件,并利用MAT(Memory Analyzer Tool)进行分析。 首先,`jmap`是Java HotSpot虚拟机的一个命令行工具,它可以提供关于JVM...
或者使用`jmap -dump:format=b,file=heap.dump <pid>`命令手动触发dump。 2. **加载Heap Dump** 使用HeapAnalyzer打开生成的heap dump文件。在工具界面中选择“File” -> “Open”,找到并加载dump文件。 3. **...
6. **相关技术**:IBM HeapDump Analyser与其它内存分析工具有异同,例如Eclipse Memory Analyzer (MAT)、VisualVM等,它们都可以辅助开发者进行Java内存问题的诊断,各有特点和适用场景。 7. **学习与进阶**:深入...
1. **生成堆转储文件**:通过`jmap -dump:format=b,file=<filename> <pid>`命令,我们可以从运行中的Java进程生成一个heap dump文件,这个文件包含了Java堆内存的所有信息。 2. **查看堆概要**:`jmap -histo:live ...
本文将详细探讨Java内存分析、dump分析、jmap和jstack工具的使用,以及如何利用这些工具进行堆栈分析。 首先,Java内存分析主要关注的是程序运行时的内存分配和管理。Java内存分为堆内存(Heap)、栈内存(Stack)...
而Eclipse Memory Analyzer Tool (MAT)是一款强大的图形化内存分析工具,它能够帮助我们分析heapdump文件,找出内存泄漏的源头。本篇文章将详细介绍`jmap`和MAT的使用及其在内存分析中的作用。 首先,`jmap`是Java ...
MAT分析工具在Windows 64位环境下运行,能够支持分析32位和64位的Java虚拟机(JVM)生成的heap dump文件。 **MAT的主要功能** 1. **对象概览**:MAT提供了一个直观的对象概览视图,显示了内存中的类和实例分布,按...
MAT(Memory Analyzer Tool),一个基于Eclipse的内存分析工具,是一个快速、功能丰富的JAVA heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗。使用内存分析工具从众多的对象中进行分析,快速的计算出在内存...
1. **对象概述(Leak Suspects)**:MAT会自动分析dump文件并提供可能的内存泄漏候选,通过" dominator tree "显示哪些对象占用了最多的内存,并尝试找出持有这些对象的"疑似罪犯"。 2. **支配树(Dominator Tree)...
- **jhat**:Java Heap Analysis Tool,配合jmap使用,可以分析heapdump文件,找出内存泄漏等问题。 - **MAT (Memory Analyzer Tool)**:Eclipse提供的一个高级内存分析工具,能够帮助用户分析heapdump,定位内存...
此外,还可以通过设置JVM参数`-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=<path>`使JVM在遇到`OutOfMemoryError`时自动创建dump文件。 在MAT中打开heap dump文件后,可以利用以下几个关键功能进行分析: 1...
在实际使用MAT时,我们需要先获取heap dump文件,这通常可以通过JVM的`jmap`命令或在JVM崩溃时自动生成。然后导入到MAT中,通过上述功能进行分析。例如,我们可能会关注那些有大量实例但没有被释放的类,或者查找...
3. **分析heap dump**:利用MAT的工具如Histogram、Dominator Tree等进行分析。 4. **识别问题**:查看Leak Suspects报告,寻找可能的内存泄漏问题。 5. **解决问题**:根据MAT提供的信息,定位代码中的问题并修复...
MemoryAnalyzer(MAT)就是其中的一款强大的Java内存分析工具,特别适用于对Java堆dump文件进行深度分析。本文将详细介绍如何使用MAT来分析dump文件,以揭示潜在的内存问题。 MemoryAnalyzer,简称MAT,是由Eclipse...
若要生成heap dump文件,可使用`jmap`命令,或者设置JVM参数`-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath`使得在出现内存溢出时自动创建dump文件。 `jstat`是另一个重要的监控工具,能实时展示虚拟机的运行...
分析Heapdump文件通常需要借助专业的分析工具,如MAT(Memory Analyzer Tool),Eclipse Memory Analyzer等。这些工具可以帮助识别内存中的对象实例、内存泄漏源头、大对象的统计信息等。 ### 6. 关于Javadump的...
2. **导入heap dump**:在MAT中打开这个文件,进行初步分析。 3. **识别泄漏迹象**:查看Leak Suspects报告和其他视图,找出可疑的对象和类。 4. **追踪引用链**:分析对象间的引用关系,找出泄漏的原因。 5. **优化...