一、能够引起JVM崩溃的常见原因有:
线程阻塞
CPU 使用率过高
JVM Crash
堆内存不足
类装载
Java虚拟机自身的Bug
JDK与服务器(CPU、内存、操作系统)的兼容性
内存溢出
二、日志文件
hs_err_pid.log,致命错误出现的时候,JVM生成了hs_err_pid.log这样的文件,其中包含了虚拟机崩溃原因的重要信息:
触发致命错误的操作异常或者信号;
版本和配置信息;
触发致命异常的线程详细信息和线程栈;
当前运行的线程列表和它们的状态;
堆的总括信息;
加载的本地库;
命令行参数;
环境变量;
操作系统CPU的详细信息。
JavaCore及HeapDump文件,Java程序运行时,有时会产生JavaCore及HeapDump文件,它一般发生于Java程序遇到致命问题的情况下。有时致命问题发生后,Jvm不会死掉,还能继续运行,但致命问题发生,Jvm进程会死掉,为了能够保留Java应用发生致命错误前的运行状态,JVM在宕掉前产生两个文件,分别为JavaCore及HeapDump文件。
JavaCore文件主要保存的是Java应用各线程在某一时刻的运行的位置,即JVM执行到哪一个类、哪一个方法、哪一个行上。它是一个文本文件,打开后可以看到每一个线程的执行栈,以stack trace的显示。通过对JavaCore文件的分析可以得到应用是否“卡”在某一点上,即在某一点运行的时间太长,例如数据库查询