IBM javacore 分析工具IBM Thread and Monitor Dump Analyzer for Java (TMDA)

概括

IBM Thread and Monitor Dump Analyzer for Java (TMDA) 是允许识别 Java 线程转储中的挂起、死锁、资源争用和瓶颈的工具。

脚步

  1. 下载 JAR 文件:https : //public.dhe.ibm.com/software/websphere/appserv/support/tools/jca/jca4611.jar
  2. 打开终端或命令提示符并将目录更改为您下载 JAR 文件的位置。
  3. 确保 Java 在您的 PATH 上以运行该工具。
  4. 启动工具:
java -jar jca*.jar
在 Linux 等基于 POSIX 的系统上请求线程转储的最简单方法是发送 kill -3 信号,该信号非破坏性地暂停 JVM,创建线程转储,然后 JVM 继续(暂停通常是几百毫秒)最多)。例如(将 ${PID} 替换为 Java 进程的进程 ID):
 
kill -3 $PID
有关请求线程转储和其他操作系统的其他方法,请参阅底部的相关信息链接。

附加信息

在 Java™ 进程的运行时,它可能无法做出可预测的响应,并且可能会挂起很长时间或直到 JVM 关闭。确定此类问题的根本原因并不容易。通过在 Java 进程未响应时触发一个或多个线程转储,可以收集与 JVM 相关的诊断信息以及在执行期间在特定点捕获的 Java 应用程序(请注意,Java 速度变慢的另一个常见原因是垃圾收集,在在这种情况下,您应该查看详细的垃圾收集)。例如,信息可以是关于操作系统、应用程序环境、线程、本机堆栈、锁和内存。确切的内容取决于运行应用程序的平台和 JVM。
 
这是 TMDA 的屏幕截图,显示单个线程转储(左半部分显示线程转储中的所有线程),按堆栈深度降序排序(因为堆栈深度通常与非空闲相关),并显示可疑的线程堆栈(右半部分):
 

TMDA 截图

 
在某些平台上,在某些情况下,javacores 被称为 javadumps。创建 javacore 的代码是 JVM 的一部分。可以通过使用环境变量和命令行参数来控制它。默认情况下,当 JVM 意外终止时会发生 javacore。也可以通过向 JVM 发送特定信号来触发 javacore。尽管 HotSpot JVM 中存在线程转储(发送到 stderr 而不是 javacore.txt 文件),但 J9 JVM(IBM Java、OpenJ9)生成的 javacore 的内容要丰富得多。
 
该工具分析每个线程并提供诊断信息,例如当前线程信息、导致 javacore 的信号、Java 堆信息(最大 Java 堆大小、初始 Java 堆大小、垃圾收集器计数器、分配失败计数器、空闲 Java 堆大小和分配的 Java 堆大小)、可运行线程数、线程总数、锁定的监视器数和死锁信息。
 
IBM Thread and Monitor Dump Analyzer for Java 比较每个 javacore 并提供线程的进程 ID 信息、第一个 javacore 的时间戳、最后一个 javacore 的时间戳、每分钟垃圾收集次数、每分钟分配失败次数、第一个 javacore 和最后一个 javacore、挂起嫌疑人的数量和挂起嫌疑人列表。
 
此工具还比较 javacores 中的所有监视器信息,并检测死锁和资源争用或监视器瓶颈(如果有)。
 
TMDA 工具按原样提供,不提供任何保证或支持;但是,我们会在时间允许的情况下尝试修复和增强该工具。该工具最初由 Jinwoo Hwang 创建。自从 Hwang 先生离开 IBM 后,Kevin Grigorenko ( kevin.grigorenko@us.ibm.com )在时间允许的情况下维护该工具。

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值