石小疯 发表于 2024-11-29 21:09:06

jvm-46-jvm Thread Dump 线程的信息获取+可视分析化工具 FastThread

拓展阅读

JVM FULL GC 生产问题 I-多线程通用实现
JVM FULL GC 生产问题 II-如何定位内存走漏? 线程通用实现
JVM FULL GC 生产问题 III-多线程执行队列的封装实现,进一步抽象
jvm-44-jvm 内存性能分析工具 Eclipse Memory Analyzer Tool (MAT) / 内存分析器 (MAT)
jvm-45-jvm dump 文件内存介绍+获取方式+堆内存可视分析化工具
jvm-46-jvm Thread Dump 线程的信息获取+可视分析化工具 FastThread
jvm-47-jvm GC 垃圾回收日记+获取方式+可视分析化工具 gcviewer
jvisualvm java 性能分析工具
是什么?

Thread Dump 是记录 JVM 中所有线程的执行状态(包括堆栈跟踪)的一种输出,用于分析线程的状态、死锁、阻塞等问题。
Thread Dump 是性能分析和故障排查中非常重要的工具,特别是当应用出现性能瓶颈、线程死锁、线程阻塞等问题时。
重要内容包括:


[*]线程状态:每个线程的当前状态,例如 RUNNABLE、WAITING、BLOCKED 等。
[*]线程堆栈信息:每个线程的调用堆栈,包括它当前执行的方法。
[*]锁信息:如果线程正在等待某个锁,或者持有某个锁,相关的锁信息也会被输出。
[*]死锁信息:如果存在死锁,Thread Dump 会显示死锁的线程和相关的锁信息。
线程状态


[*]RUNNABLE:线程正在执行或在执行队列中等待调理。
[*]WAITING:线程正在等待某个条件的满足(例如,等待某个对象的通知)。
[*]BLOCKED:线程正在等待获取一个锁,其他线程持有该锁。
[*]TIMED_WAITING:线程在等待特定的时间后主动恢复(例如调用 Thread.sleep)。
[*]TERMINATED:线程已执行完成,处于克制状态。
如何获得?

Thread Dump 可以在多种情况下天生,通常用于排查线程相关的问题(如死锁、线程阻塞、性能瓶颈等)。
在Java中,天生Thread Dump的方法有几种:
使用 jstack 工具

jstack 是JDK自带的工具,用于天生Java进程的Thread Dump。
可以通过以下下令天生Thread Dump:
jstack <pid> > threaddump.txt使用 jcmd 工具

jcmd 是另一个JDK自带的工具,可以用来获取Thread Dump。
通过以下下令天生Thread Dump:
jcmd <pid> Thread.print区别

二者对比如下:
特性jstackjcmd功能仅获取线程堆栈信息获取线程堆栈信息并执行其他JVM管理任务输出内容简单的堆栈信息,线程状态与调用堆栈线程堆栈信息,线程状态解释,锁信息等使用方便性简单,适用于快速查看堆栈信息更灵活,支持多种JVM操作和诊断任务下令示例jstack jcmd <pid> Thread.print附加功能无支持多种操作,如垃圾回收、类加载等如何分析?可视化工具

以下是一些常用的 Thread Dump 可视化分析工具
工具名称特点网址Thread Dump Analyzer简单易用,支持死锁和线程阻塞分析。GitHubVisualVM功能强盛,支持多种 JVM 性能分析。VisualVM 官网JStack Viewer高亮显示线程状态和锁信息,易用性强。GitHubEclim专为 Eclipse 提供的插件,集成环境使用GitHubDeadlock Detector专注于死锁分析,提供图形化视图。GitHubTDA (Thread Dump Analyzer)支持线程堆栈可视化与排序,死锁检测。GitHubjvm-tools Thread Dump Analyzer基于 JavaFX,现代界面,支持死锁分析。GitHub个人评价:thread 相对比较简单,平时人工分析的比较多,后续可以实验一下这种可视化工具。VisualVM 倒是看过可视化的 thread 信息。
可视化工具-FastThread

是的,FastThread 是一个非常实用的开源工具,专门用于分析和可视化 Thread Dump,尤其是针对 Java 应用程序中的多线程问题,如死锁、线程阻塞等。它能够帮助开辟人员更高效地分析和明白 Java 线程的状态。
FastThread 的特点:


[*]线程堆栈分析:分析和分析 Java 应用程序的 Thread Dump,提供清晰的线程堆栈和状态。
[*]死锁检测:能够主动检测死锁并高亮显示,帮助开辟者快速定位死锁问题。
[*]线程状态图:通过图形化界面展示线程状态(如 RUNNABLE、WAITING、BLOCKED),便于直观分析。
[*]支持线程堆栈排序:能够根据差别的标准对线程堆栈举行排序,比如按线程状态、线程 ID 等。
[*]简单易用:界面简便,操作简单,不必要复杂的配置。
FastThread 的使用:


[*]Web 在线工具:FastThread 提供了一个方便的在线工具,用户只必要将 Thread Dump 粘贴到网站上,即可主动分析和显示效果。
[*]下令行工具:除了在线工具,FastThread 也提供了下令行工具,可以集成到主动化流程中,支持批量处理惩罚 Thread Dump。
FastThread 网站:


[*]在线工具:https://fastthread.io

[*]用户可以直接将线程转储粘贴到该网站上,举行分析。

[*]GitHub 项目:https://github.com/fastthreadio/fastthread

[*]这里可以找到 FastThread 的源码和相关文档。

使用场景:


[*]死锁分析:当遇到线程死锁时,FastThread 能够主动识别并标记相关线程,帮助开辟者快速解决问题。
[*]线程阻塞问题:通过清晰的线程状态展示,帮助分析线程阻塞的根源,优化多线程程序的性能。
[*]性能优化:对于必要多线程优化的应用,FastThread 提供了对线程状态的详细分析,帮助识别性能瓶颈。
总结:

FastThread 是一个非常得当 Java 开辟者使用的线程分析工具,尤其适用于在线分析 Thread Dump 息争决死锁、线程阻塞等常见的多线程问题。
它的开源特性和易用性使它成为开辟者在诊断线程问题时的一个有力工具。
小结

希望本文对你有所帮助,如果喜好,欢迎点赞收藏转发一波。
我是老马,期待与你的下次相遇。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: jvm-46-jvm Thread Dump 线程的信息获取+可视分析化工具 FastThread