准备工具:
eclipse
做如下参数设置:
Windows->Preferences->Java->Installed JREs->Edit JRE, 这个时候设置Default VM arguments=-Xms2m -Xmx2m -XX:+HeapDumpOnOutOfMemoryError
上述参数设置的意思是:设置堆内存最小为2m,最大也为2m,并且在发生OOM的时候dump内存
还需要一步就是安装MAT:
链接如下:http://download.eclipse.org/mat/1.3.1/update-site/
好了现在写一个测试程序跑一下:
package com.luch.security.demo;
import java.util.ArrayList;
import java.util.List;
public class OOMTest {
static class OOMObject {
}
public static void main(String[] args) {
List<OOMObject> list = new ArrayList<OOMObject>();
while (true) {
list.add(new OOMObject());
}
}
}
直接运行上面的代码就可以,会出现OOM error,这个时候就会生成一个dump堆栈信息的文件:名字如java_pid16824.hprof
如果你的eclipse安装了MAT插件,那么这个时候,你就可以直接打开,并且可以找到这样的信息:
Thread Stack
main
at java.lang.OutOfMemoryError.<init>()V (Unknown Source)
at java.util.Arrays.copyOf([Ljava/lang/Object;ILjava/lang/Class;)[Ljava/lang/Object; (Unknown Source)
at java.util.Arrays.copyOf([Ljava/lang/Object;I)[Ljava/lang/Object; (Unknown Source)
at java.util.ArrayList.ensureCapacity(I)V (Unknown Source)
at java.util.ArrayList.add(Ljava/lang/Object;)Z (Unknown Source)
at com.luch.security.demo.OOMTest.main([Ljava/lang/String;)V (OOMTest.java:15)
哈哈,这样就可以帮忙程序员分析到底是因为什么原因导致的OOM了
分享到:
相关推荐
当JVM遇到问题,如内存溢出或长时间的垃圾回收,它可能会生成堆栈转储(dump)文件,这些文件包含了JVM在特定时刻的详细状态,包括对象、类加载器、线程、堆和栈信息。"Jvm堆栈dump文件分析"是指通过特定工具对这些...
Thread Dump 是非常有用 Java应用问题的工具。每一个 Java 虚拟机 都有及时生成所有线程在某...照,及JVM 中所有 Java线程的堆栈跟踪信息,堆栈信息一般包含完整的类名 及所执行的方法,如果可能的话还有源代码的行数。
此外,`javacore`和`heapdump`工具也是常用的WebSphere dump分析助手,它们提供了关于JVM内存和线程状态的详细信息。 对于z/OS这样的大型主机操作系统,IBM提供了Tivoli OMEGAMON工具集,其中的OMEGAMON XE for ...
当应用出现性能问题或异常时,可以使用`jmap`命令来dump出JVM的堆栈信息,命令格式通常为 `jmap -dump:format=b,file=<dump_file> <pid>`,其中`<pid>`是Java进程的ID,`<dump_file>`是生成的dump文件名。...
本篇学习笔记主要介绍如何利用一系列工具来查看和监控JVM的各种运行时信息,包括但不限于JVM进程与参数查看、垃圾收集信息、JVM锁信息等内容。 #### 二、查看JVM进程及参数 ##### 1. JPS - **用途**:列出主机上...
不同JAVA虚拟机的线程dump的创建方法和文件格式是不一样的,不同的JVM版本,dump信息也有差别。 在实际运行中,往往一次dump的信息,还不足以确认问题,建议产生三次dump信息,如果每次dump都指向同一个问题,我们...
尽管不同JVM打印的Thread Dump可能略有差异,但它们通常提供了当前所有活动线程的状态信息以及JVM中所有Java线程的堆栈跟踪详情。这些堆栈信息包括完整的类名、执行的方法以及可能的源代码行号。 **1.2 Thread Dump...
同时,还要检查堆栈跟踪,确定哪些线程或方法在崩溃时刻正在执行,并结合Java堆、方法区、元数据等内存区域的状态进行分析。 总之,理解和分析JVM崩溃日志是诊断和解决Java应用程序性能问题的关键步骤。通过深入...
本文将详细讲解如何使用`jmap`中的`-dump:format=b,file=heapdump.hprof`选项来生成堆栈文件,并利用MAT(Memory Analyzer Tool)进行分析。 首先,`jmap`是Java HotSpot虚拟机的一个命令行工具,它可以提供关于JVM...
我们可以使用 -XX:+HeapDumpOnOutOfMemoryError 选项来让 JVM 在出现 OutOfMemoryError 异常时 dump 堆栈信息,以便后续分析。 最后,我们还可以使用 Redis 等缓存工具来缓存一些频繁访问的数据,以减少 JVM 的垃圾...
5. **异常和错误记录**:dump文件通常包含错误日志和异常堆栈跟踪,工具可以帮助解析这些信息,找出导致问题的具体原因。 6. **性能指标**:分析工具可能还提供CPU、内存和I/O等系统的性能指标,以辅助故障排查。 ...
线程dump文件是JVM在特定时刻生成的一种快照,它包含了JVM中所有线程的详细信息,包括线程ID、线程状态、栈轨迹等。IBM Thread and Monitor Dump Analyzer(TMDA,也称作jca)是一个专门用于解析和分析这些线程dump...
1. **JDK自带的`jstack`工具**:用于查看JVM的线程堆栈信息,帮助定位死锁或阻塞线程。 2. **`jmap`工具**:可以输出堆内存的详细信息,包括对象分布、内存区域大小等,辅助分析内存泄漏。 3. **`jhat`或`VisualVM`*...
- **jconsole**:Java可视化监控工具,可以显示JVM的内存、线程、类装载、Garbage Collection (GC) 和CPU使用情况等信息。 - **jvisualvm**:这是一个更加强大的多合一工具,包含jconsole的功能,并且可以附加到...
Javadump包含关于Java进程的详细信息,如系统属性、环境变量、线程堆栈信息等。在某些情况下,Javadump文件对于深层次的问题分析是非常有用的。 ### 结语 WebLogic dump文件的获取和分析是WebLogic监控和性能调优...
hprof是一个由Sun Microsystems开发的JVM性能分析工具,主要用于收集Java应用程序的堆内存快照、线程堆栈跟踪、CPU采样和监视器竞争等信息。通过分析这些信息,开发者可以识别程序中的性能瓶颈,如内存泄漏、热点...
其中,`-l` 选项用于生成线程的堆栈跟踪信息,`1234` 是要dump的进程ID。 MAT MAT是Memory Analyzer Tool的缩写,用于分析堆dump。MAT可以对堆dump进行详细的分析,并提供了多种视图来帮助开发人员理解堆的结构。 ...
1. jstack <pid>:通过指定的进程ID,jstack能够分析Java堆栈跟踪信息,并且能检测到被阻塞的线程以及它们所持有的锁。 通过JVM自带的jvisualvm工具,可以远程连接并监控JVM的实时状态,包括检测死锁。jvisualvm是...
使用MAT进行堆栈分析时,通常需要先获取JVM的heap dump文件,这可以通过JVM的命令行选项(如`-XX:+HeapDumpOnOutOfMemoryError`或通过JVisualVM等工具手动触发)。然后,将这个dump文件导入MAT进行分析。MAT会解析...