java - 调试工具在 Java 应用程序中挂起

标签 java debugging jvm crash-dumps jvm-crash

我有一个 Java 应用程序有一半时间挂起,另一半时间 JVM 崩溃。有没有一种工具可以用来查看导致它挂起和/或崩溃的原因? 我使用的是 CentOS 5.6

最佳答案

对于初学者,我建议 JVisualVM .它与 JDK 一起提供,因此您只需在命令行中键入 jvisualvm 即可启动它。

一旦启动,您就可以连接到正在运行的 JVM,因此您应该能够连接到挂起的 Java 进程并检查堆栈转储中所有正在运行的线程以及堆的内容。


其他有用的内置工具包括:

jps 列出正在运行的java进程的进程id

jstack 为指定 JVM 进程中的每个线程打印堆栈转储

jmap 为指定的JVM进程生成heap dump(jvisualvm也可以生成heap dump)

jhat 分析使用 jmap 或 jvisualvm 生成的堆转储


当然,还有更复杂的分析器可用。 JProfiler受到高度重视。

关于java - 调试工具在 Java 应用程序中挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9833497/

相关文章:

java - 通过entityManager.refresh刷新实体集合(getResultList)

Java JAXB 的优点/缺点和文档

java - 您应该在生命周期的哪个部分初始化服务使用的 fragment 中的对象?

android - 如何通过 Playstore APK 安装调试 ApK

java - Java 中 native 资源映射的生命周期(以及如何保持它们同步)

java - JVM Tenured/Old gen 达到限制和服务器挂起

java - 数组中的填充停顿(Big Java Ex 7.22)

c++ - 帮助事后调试混合模式 Win32 应用程序

debugging - 断言具有副作用的函数的返回值的 Rust 方法是什么?

java - 如何在 eclipse 外部运行的 Tomcat Web 应用程序中执行热代码替换?