java - 如何调试 JVM 中的挂起线程?

标签 java multithreading debugging jvm remote-debugging

我正在远程 Ubuntu 服务器上运行一个持久的 Java 程序,我在该服务器上拥有 root 用户权限。一段时间后,某些 CPU 核心的使用率会达到 100%。日志没有显示任何可疑之处,应用程序仍然可以运行,但吞吐量有所下降。

如何调试 JVM,以便在它仍在运行时找出其原因?

最佳答案

一个选项是 VisualVM ,从 Java 1.6 开始包含在 JDK 中。我发现它在过去的某些情况下很有用。

您可以连接到本地应用程序或远程应用程序。

要连接到远程应用,请在远程服务器上运行 jstatd,然后在本地运行 VisualVM 并输入服务器的 IP 地址。您应该会获得一份正在运行的 Java 应用程序列表,其中包括您希望探索的应用程序。如果您在列出应用程序时遇到任何问题,VisualVM 网站上提供了很好的文档。

关于java - 如何调试 JVM 中的挂起线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10915929/

相关文章:

java - 如何在 WebDriver(FirefoxDriver) 测试中关闭或禁用基本身份验证弹出窗口

java - ActiveMQ Jolokia API 如何获取完整的消息正文

java - Firebase:为身份验证和通知设置不同的环境

node.js - 从控制台调试 Protractor 测试

java - 字符串等于求值

c# - 从 wp8 应用程序中的单独线程更新 UI

c++ - 基于任务的并发异步

python - Compute Engine n1-标准仅使用 50% 的 CPU

delphi - 对 FastMM 使用 FullDebugMode 时在 IDE 中运行失败

windows - 为什么 gtk+ 在 eclipse 上调试时显示 "invalid utf-8"?