如何调试linux环境中的jmv堆栈和tomcat与ramdonly崩溃的java应用程序?

时间:2017-12-01 17:01:22

标签: java tomcat jvm jvm-crash

我遇到了问题,我的工作取决于此。

Linux下有一些使用tomcat的java应用程序崩溃(应用程序不是我的,不能修改)。 我们每天早上发现一些应用程序坏了。 我希望看到java堆栈,因为它崩溃了应用程序以查看JVM的消息(outofmemory,nullpointer等)。如果我能看到解决问题的建议。

我对这件事一无所知。

我看到在互联网上搜索visualvm和jconsole。足够我想做什么? 我想在崩溃时看到JVM的Java堆栈的消息。

我需要帮助。非常感谢你。

1 个答案:

答案 0 :(得分:1)

看起来你有内存泄漏问题,应用程序在重启一段特定时间后是否有效? 您可能希望查看java堆中发生的情况,因为您可以进行堆转储。使用jcmd实用程序,您可以在服务器上安装的JDK中找到此实用程序。

jcmd <process id/main class> GC.heap_dump filename=filename

注意:每次运行时都会执行GC。

要安排此项,您需要设置cronjob。

或者,如果在运行应用程序时指定-XX:+HeapDumpOnOutOfMemoryError命令行选项,则在抛出OutOfMemoryError异常时,JVM将生成堆转储(在日志中)。

希望这会有所帮助。 :)