7

你知道一些好的线程转储分析工具吗?完美的是:

  • 自由
  • 可以读取一些线程转储并进行比较
  • 指出哪些线程花费的时间最长,线程被锁定的类是什么等。
  • 显示线程、锁、死锁和等待获取单个锁的多个线程

编辑:

  • 离线分析 - 使用一个或多个线程转储加载文件并对其进行分析。

编辑: 我的选择是:武士。它具有我需要的所有功能:加载日志文件,并比较几个线程转储。分析并指出:

  • 等待线程
  • 阻塞的线程
  • 阻塞线程
  • 僵局

我将问题保留为已回答,因为 TDA 是给出的最佳答案。

4

3 回答 3

7

你可以使用 TDA - Thread Dump Analyser,一个 Visual VM 的插件。

Visual VM 也是免费的。我认为这是你最好的选择。

如果您在 Linux 上,您可以使用 kill -3 获取线程转储并使用 Thread Dump Analyzer 查找死锁。

VisualVM 现在作为 JDK 的一部分提供,可用于监控内存使用情况、线程,还包括一个分析器。

jmap 可用于从 Java 进程获取堆直方图和堆转储。然后,您可以使用 Eclipse Memory Analyzer 之类的工具对其进行调查。

正如另一个答案提到的那样,您可以查看 JMX 和 JConsole。对于我们应用程序中的每个服务,我们都有一个 MBean,因此我们可以查看诸如队列大小之类的键统计信息,以检查是否有任何异常。

来自ServerFault 上Sun JVM 故障排除的工具和技巧。

于 2012-11-14T08:18:57.470 回答
3

如果您使用 IBM JRE,您应该使用IBM Thread and Monitor Dump Analyzer for Java,它提供了您真正需要的东西(离线使用、比较等)。

于 2012-11-26T10:25:44.400 回答
0

你可以试试我的Dump Analyzer。我有同样的需求并开发了自己的转储分析器。它具有您列表中的一些功能。

于 2014-04-02T18:02:56.043 回答