有一次服务器jvm crash,无任何异常信息。后来想想不对啊,除非是人为的将java的进程kill掉,要不然不可能没有错误日志的,后来突然想起上次价格行情做性能测试时,当jvm crash掉之后,是在命令目录下会生成一个hs_err_pid*****.log文件的,于是找到那个文件,下面是分析过程,
这个文件有几部分内容,首先是头部信息,头信息包含了出错的大体信息和位置。
在这部分中,有三块内容需要我们注意,一是SIGSEGV是一个信号名称,表示这是一个建立CORE文件段的非法错
误;二是指明了运行环境,jre版本以及jvm版本;三是最重要的信息,它指明了出错的地方,这里V表示一种frame type,这里是指vmframe,而中括号里则表示出错是在libjvm.so这个文件里,具体位置的偏移量为+号后面的数据。由这里可以知道这是由于jvm自身运行错误导致。
这个文件的第二部分则是当前处理的线程,或者说是当jvm crash时在运行的线程,详细内容如下: