有没有让java应用程序转储一个文件,其中包含有关JVM崩溃原因的信息?
答案 0 :(得分:1)
如果你不是说实际的JVM因程序错误而崩溃,但更多的是你得到了一个意外导致程序失效的异常,你可以在main方法中使用try-catch:
public static void main(String args[]) {
try {
doStuff();
} catch (Throwable e) {
e.printStackTrace();
logStuff(e);
}
}
答案 1 :(得分:1)
如果JVM由于本机代码中的错误而崩溃(即,通过JNI访问的代码 - 不一定是JVM本身),JVM(通常)会产生堆转储。默认情况下,它是在JVM的工作目录中名为hs_err_pidXXXX.log
的文件中创建的(XXXX
是进程ID)。
如果您的意思是来自Java程序本身的崩溃,here是一篇关于如何为未捕获的异常设置处理程序的好文章。然后,您可以将它们(以及关联的堆栈跟踪)记录到文件中。
答案 2 :(得分:0)
答案 3 :(得分:0)
您可以使用DebugDiag工具或IBM Memory Analyzer。后者有很多关于后者的教程。希望这会有所帮助。
答案 4 :(得分:0)
在jdk中,你有一个名为jmap的工具来转储内存和jhat来分析对象。