线程转储分析器

Aug*_*tto 7 java multithreading thread-dump analyzer

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

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

编辑:

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

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

  • 等待线程
  • 被阻止的线程
  • 阻止线程
  • 僵局

我会回答问题,因为TDA是给出的最佳答案.

Sha*_*oor 7

您可以使用TDA - Thread Dump Analyzer,一个Visual VM插件.

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

如果您使用的是Linux,则可以使用kill -3获取线程转储并使用Thread Dump Analyzer查找死锁.

VisualVM现在作为JDK的一部分提供,可用于监视内存使用,线程以及还包括分析器.

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

正如另一个提到的答案,你可以看看JMX和JConsole.对于我们应用程序中的每个服务,我们都有一个MBean,因此我们可以查看密钥统计信息,例如队列大小,以检查是否有任何异常.

来自ServerFault上的Sun JVM故障排除的工具和提示.