background image

JavaCore/HeapDump 文件及其分
析方法

Java 程序运行时,有时会产生 JavaCore 及 HeapDump 文件,它一般发生于 Java 程序
遇到致命问题的情况下。下面我们就来看看 JavaCore/HeapDump 文件及其分析方法。

产生时间

Java 程序运行时,有时会产生 JavaCore 及 HeapDump 文件,它一般发生于 Java 程序遇到致命问题
的情况下。

有时致命问题发生后,Java 应用不会死掉,还能继续运行;

但有时致命问题发生,Java 进程会死掉;

为了能够保留 Java 应用发生致命错误前的运行状态,JVM 在死掉前产生两个文件,分别为 JavaCore
及 HeapDump 文件。

有何区别

JavaCore 是关于 CPU 的,而 HeapDump 文件是关于内存的。

JavaCore 文件主要保存的是 Java 应用各线程在某一时刻的运行的位置,即 JVM 执行到哪一个类、哪一
个方法、哪一个行上。它是一个文本文件,打开后可以看到每一个线程的执行栈,以 stack trace 的显示
通过对 JavaCore

“ ”

文件的分析可以得到应用是否 卡 在某一点上,即在某一点运行的时间太长,例如数

据库查询,长期得不到响应,最终导致系统崩溃等情况。

HeapDump 文件是一个二进制文件,它保存了某一时刻 JVM 堆中对象使用情况,这种文件需要相应的
工具进行分析,如 IBM Heap Analyzer 这类工具。这类文件最重要的作用就是分析系统中是否存在内
存溢出的情况。

怎么生成

这两个文件可以用手工的方式生成,当我们会遇到系统变慢或无响应的情况,这时就以采用手工的方式
生成 JavaCore 及 HeapDump 文件。

在 Unix/Linux 上,产生这两个文件的方法如下:

1. # ps -ef | grep java  
2. user 

4616

 

4582

 

0

 

17

:

30

 pts/

0

 

00

:

00

:

00

 grep java