我有一个问题,我的工作取决于此。
Linux下有一些带tomcat的java应用程序ramdonly崩溃(这些应用程序不是我的,无法修改)。 每天早上我们都会发现一些应用程序坏了。 我想在应用程序崩溃时查看 java 堆栈以查看 JVM 的消息(内存不足、空指针等)。如果我能看到解决问题的建议。
我不知道该怎么做。
我看到在互联网 visualvm 和 jconsole 中搜索这个。对我想做的事足够了吗? 我想在崩溃时看到 JVM 的 java 堆栈的消息。
我需要帮助。非常感谢。
最佳答案
看起来你有内存泄漏问题,应用程序在重启后是否可以正常运行一段时间? 您可能想看看 java 堆内部发生了什么,因为您可以进行堆转储。为此使用 jcmd 实用程序,您可以在服务器上安装的 JDK 中找到该实用程序。
jcmd <process id/main class> GC.heap_dump filename=filename
注意:每次运行时都会执行 GC。
要安排它,您需要设置 cronjob。
或者,如果您在运行应用程序时指定 -XX:+HeapDumpOnOutOfMemoryError
命令行选项,则当抛出 OutOfMemoryError 异常时,JVM 将生成堆转储(在日志中)。
希望这对您有所帮助。 :)
关于java - 如何在 linux 环境和 tomcat 中调试 jmv 堆栈与 java 应用程序崩溃 ramdonly?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47598063/