当系统宕机,我们需要分析系统宕机原因,除了日志还有两个非常关键的文件可以帮助我们快速找到问题,这两个文件就是javacore和heapdump。
javacore:是 Java 提供的一种诊断特性,能够提供一份可读的当前运行的 JVM 中线程使用情况的快照。即在某个特定时刻,JVM 中有哪些线程在运行,每个线程执行到哪一个类,哪一个方法。
heapdump:是在特定时刻JVM堆内存使用情况的快照,是分析OOM(内存溢出)的利器。
但是并不是所有JVM在宕机时都会生成这两个文件,需要开启相关参数才可以。
SUN/Oracle JVM
HotSpot JDK
如果要即时动态生成heapdump文件可以使用jmap命令
jmap -dump:format=b,file= <pid>
IBM JVM
IBM JDK
手工生成javacore文件
kill -3 pid
手工生成heapdump文件
启动wsadmin,进入wsadmin环境
生成heapdump
HP JVM
hp jdk