如何在JVM崩溃后创建堆转储文件

时间:2013-08-30 10:01:39

标签: java jvm-crash heap-dump

当JVM崩溃时,会在工作目录中创建堆转储文件(hs_err_pidXXXX.log)。我想知道谁创建了这个文件。 JVM崩溃意味着它已异常终止。所以它肯定不会创建这个文件。那么这个文件是如何创建的?

我们也可以控制此文件中显示的信息。如果我想在一个文件(hs_err_pidXXXX.log)中同时进行线程转储和堆转储,是否可能?如果有,怎么样?基本上我的优先事项是识别导致JVM崩溃的函数(或堆栈跟踪)并将其存储在创建的堆转储文件中。

2 个答案:

答案 0 :(得分:5)

许多操作系统允许进程为某些特殊条件注册处理程序。例如,在UNIX中有concept of signals

因此JVM本身可能会写入日志。

答案 1 :(得分:0)

您已经在崩溃时获得堆转储。要另外获取线程转储,请使用以下JVM参数

 -XX:OnOutOfMemoryError="kill -3 %p"

注意:这很可能会在不同的文件或控制台中创建线程转储。

相关问题