有没有办法让Java应用程序转储文件,其中包含有关JVM崩溃原因的信息?获取有关JVM崩溃的信息
回答
如果你不意味着实际JVM崩溃了程序错误,但更多的,你有这带来了你的程序下来意外的是,你可以在你的主要方法使用一个try-catch异常:
public static void main(String args[]) {
try {
doStuff();
} catch (Throwable e) {
e.printStackTrace();
logStuff(e);
}
}
这将捕获任何种类的'Error',包括'OutOfMemoryError',它本身需要一些内存来处理...听起来对我来说是个坏主意。 – whiskeysierra 2010-09-22 07:24:41
有更好的建议呢? – 2010-09-22 07:52:41
Willi,无论如何处理OutOfMemoryError都需要内存? – Will 2010-09-22 17:32:44
可以使用DebugDiag工具或IBM Memory Analyzer。后者有很多教程。希望这可以帮助。
在jdk中,您有一个名为jmap的工具来转储内存并分析对象。
如果它结束了,你将如何转储?我想我可以在最后添加一个Thread.Sleep,但有没有更好的方法? – Will 2010-09-22 16:22:16
对不起,我没有任何其他的想法。 – 2010-09-22 18:57:20
如果JVM由于本机代码错误(即通过JNI访问的代码 - 不一定是JVM本身)中的错误而崩溃,则JVM(通常)会生成堆转储。默认情况下,它是在JVM的工作目录中的一个名为hs_err_pidXXXX.log
的文件中创建的(XXXX
是进程ID)。
如果您的意思是来自Java程序本身的崩溃,here是一篇关于如何为未捕获的异常设置处理程序的好文章。然后您可以将它们(和关联的堆栈跟踪)记录到文件中。
如果异常被未记录的try/catch处理并处理,该怎么办?有什么办法可以获得线程抛出的最后一个java异常? – Will 2010-09-22 14:35:38
@高:我不认为有。 try/catch块负责处理异常并适当地执行操作(例如:取消操作和/或记录某些内容)。这就是为什么人们(几乎)不会使用空的catch块。但即使“吞咽”异常也不会导致JVM崩溃或线程死亡。只有未捕获的异常可以这样做。 – 2010-09-23 07:50:39
- 1. GCTaskThread JVM崩溃
- 2. JVM崩溃:与java.awt.Graphics的关系?
- 3. 我可以从这样的崩溃信息中获得有用的信息吗?
- 4. 崩溃,没有错误信息
- 5. JVM突然崩溃
- 6. JBoss/HotSpot JVM崩溃
- 7. 获取有关WiFi网络的信息
- 8. API来获取有关URL的信息
- 9. 获取有关splayd的信息
- 10. 获取有关YouTube视频的信息
- 11. WooCommerce获取有关订单的信息
- 12. 获取有关jboss的信息
- 13. 获取有关继承链的信息
- 14. ConnectivityManager在获取网络信息时崩溃了
- 15. 在iOS崩溃报告中获取线程特定信息?
- 16. 如何从ApplicationErrorReport类获取崩溃信息?
- 17. 6.0_26-b03中的JVM崩溃
- 18. JVM外的JNI崩溃 - EXCEPTION_ACCESS_VIOLATION
- 19. JVM的崩溃报告
- 20. 避免jvm崩溃日志
- 21. JVM在Lucene上崩溃DataInput.readVInt
- 22. Tomcat JVM崩溃 - EXCEPTION_ACCESS_VIOLATION(0xc0000005)
- 23. Java JNA WindowProc JVM崩溃
- 24. iOS应用程序在没有崩溃信息的设备上崩溃
- 25. ClientWebSocket.ConnectAsync崩溃与任何错误信息
- 26. Android 7+发送崩溃信息
- 27. Django崩溃没有消息
- 28. 如何获取有关发送短信的信息?
- 29. 如何在Mobile Center中添加有关崩溃的其他信息
- 30. 如何获取关系表的所有关联信息?
好问题,但你打算怎么办?你是JVM开发人员吗?如果* JVM *崩溃,那么JVM就会出错。下面是一个(1K视图)问题,我问了如何处理可以随意触发的可重复JVM崩溃:http://stackoverflow.com/questions/2299250 – SyntaxT3rr0r 2010-09-22 02:14:42
我正在处理java字节码。看起来,当有一个无效的函数java喜欢崩溃没有警告。这可能是错误正在某处处理。反正有没有得到线程抛出的最后一个java异常? – Will 2010-09-22 13:48:06