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

标签 java tomcat jvm jvm-crash

我有一个问题,我的工作取决于此。

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/

相关文章:

java - java中使用HashMap创建对象

tomcat - 将 Tomcat 中的 URL 从动态 appName 重写为现有上下文

java - JVM 在退出时挂起

java - 使用普通对象指针(OOP)在32位模式下但在64GB RAM上运行Java应用程序

java - 在预先排序的链表中插入一个节点

java - 在 Android 上使用 Dagger2 进行依赖注入(inject)

java - 什么是比较 StringBuilder 对象的有效方法

Tomcat:未配置但使用了NIO?

java - 注册后自动登录

scala - 如何收集错误是scala,然后将所有错误汇总在一起