JVM崩溃时的日志文件包含了各种有用的调试信息,例如被加载的共享库和完整的环境。我是否可以通过编写会导致JVM崩溃的代码或其他方式来强制生成这些信息之一?或者,是否可以通过其他方式访问相同的信息?
jstack
似乎最有前途,使用命令 jstack -l -F -m <pid>
(如果进程没有挂起,则不需要 -F
)。 这将以混合模式(Java 和 native)获取您所有线程的堆栈和被锁定的同步器,即使进程挂起。 - PJTraillkill -4 <PID>
我相信这可以通过IBM JDK完成,因为我之前曾经尝试过他们的堆栈分析器。一种强制转储的选项是引发OutOfMemoryException异常。
这些工具可能会提供一些线索http://www.ibm.com/developerworks/java/library/j-ibmtools1/
hs_err_pid*.log
。 - PJTraill