JVM异常退出

JVM运行过程中有可能异常退出,即JVM进程忽然消失,此时通常不是Java Stack或者Java Heap出现异常,而是与OS本地堆栈有关。JVM中运行的应用系统通常难以处理此问题,但如果应用系统中使用了JNI,则有可能与此部分代码相关。

在Windows上,JVM异常退出时通常会生成“hs_err_pidXXXX.log”文件,此文件位于JVM进程的“当前路径”下(如Tomcat的bin/),可以从此文件中得到异常退出时的现象。遗憾的是,应用系统开发人员很难分析此文件,但可以根据此文件得到一些信息,或者将此文件反馈给能够分析的技术社区。

下面列举几种HotSpot JVM异常退出时产生的“hs_err_pidXXXX.log”文件中的信息:

异常一:

# An unexpected error has been detected by Java Runtime Environment:
#  EXCEPTION_STACK_OVERFLOW (0xc00000fd) at pc=0x6da3a7fd, pid=3012, tid=3108
# Java VM: Java HotSpot(TM) Client VM (11.0-b15 mixed mode windows-x86)
# Problematic frame:
# V  [jvm.dll+0x18a7fd]
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp#

异常二:

# An unexpected error has been detected by Java Runtime Environment:
# java.lang.OutOfMemoryError: requested 1024000 bytes for GrET in C:BUILD_AREAjdk6_10hotspotsrcsharevmutilitiesgrowableArray.cpp. Out of swap space?
#  Internal Error (allocation.inline.hpp:42), pid=4060, tid=3816
#  Error: GrET in C:BUILD_AREAjdk6_10hotspotsrcsharevmutilitiesgrowableArray.cpp
# Java VM: Java HotSpot(TM) Client VM (11.0-b15 mixed mode windows-x86)
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp

注:上面列举的JVM异常只包含部分总结性的信息,log文件中还有更多的详细信息。

HotSpot JVM之外的其他JVM是否有类似信息尚未确定,但此类问题通常应用层开发者难以解决(JNI相关应用的开发者除外)。

原文地址:https://www.cnblogs.com/xiongmaotailang/p/5249505.html