你知道一些好的线程转储分析工具吗?完美的是:
- 自由
- 可以读取一些线程转储并进行比较
- 指出哪些线程花费的时间最长,线程被锁定的类是什么等。
- 显示线程、锁、死锁和等待获取单个锁的多个线程
编辑:
- 离线分析 - 使用一个或多个线程转储加载文件并对其进行分析。
编辑: 我的选择是:武士。它具有我需要的所有功能:加载日志文件,并比较几个线程转储。分析并指出:
- 等待线程
- 阻塞的线程
- 阻塞线程
- 僵局
我将问题保留为已回答,因为 TDA 是给出的最佳答案。
你知道一些好的线程转储分析工具吗?完美的是:
编辑:
编辑: 我的选择是:武士。它具有我需要的所有功能:加载日志文件,并比较几个线程转储。分析并指出:
我将问题保留为已回答,因为 TDA 是给出的最佳答案。
你可以使用 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 故障排除的工具和技巧。
如果您使用 IBM JRE,您应该使用IBM Thread and Monitor Dump Analyzer for Java,它提供了您真正需要的东西(离线使用、比较等)。
你可以试试我的Dump Analyzer。我有同样的需求并开发了自己的转储分析器。它具有您列表中的一些功能。