【Java系列】OOM 时,JVM 堆栈信息保存和分析
在Java程序遇到OutOfMemoryError时,可以通过设置JVM参数来保存堆栈信息,并使用MAT(Memory Analyzer Tool)等工具进行分析。
- 启动Java程序时,可以通过设置
-XX:+HeapDumpOnOutOfMemoryError
参数来在OOM时保存堆内存快照:
java -XX:+HeapDumpOnOutOfMemoryError -jar your-application.jar
- 如果需要指定堆内存快照的保存路径,可以使用
-XX:HeapDumpPath
参数:
java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/heapdump.hprof -jar your-application.jar
- 当OOM发生后,会在指定的路径生成一个
.hprof
文件,可以使用MAT等工具打开这个文件进行分析。 使用MAT打开
.hprof
文件进行分析的基本步骤:- 打开MAT
- 选择
File
>Open
,然后选择.hprof
文件 - MAT会加载文件并展示内存使用情况的概览
- 使用MAT提供的各种功能和视图来分析内存泄漏、确定对象保留在内存中的原因等
请注意,具体的解决方案取决于OOM发生的原因和MAT分析后确定的内存泄漏或者不合理的内存使用情况。
评论已关闭