论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
jvm-46-jvm Thread Dump 线程的信息获取+可视分析化工具 ...
jvm-46-jvm Thread Dump 线程的信息获取+可视分析化工具 FastThread ...
石小疯
论坛元老
|
2024-11-29 21:09:06
|
显示全部楼层
|
阅读模式
楼主
主题
1027
|
帖子
1027
|
积分
3081
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
拓展阅读
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
复制代码
区别
二者对比如下:
特性
jstack
jcmd
功能
仅获取线程堆栈信息获取线程堆栈信息并执行其他JVM管理任务
输出内容
简单的堆栈信息,线程状态与调用堆栈线程堆栈信息,线程状态解释,锁信息等
使用方便性
简单,适用于快速查看堆栈信息更灵活,支持多种JVM操作和诊断任务
下令示例
jstack jcmd <pid> Thread.print
附加功能
无支持多种操作,如垃圾回收、类加载等
如何分析?可视化工具
以下是一些常用的
Thread Dump 可视化分析工具
工具名称
特点
网址
Thread Dump Analyzer
简单易用,支持死锁和线程阻塞分析。
GitHub
VisualVM
功能强盛,支持多种 JVM 性能分析。
VisualVM 官网
JStack Viewer
高亮显示线程状态和锁信息,易用性强。
GitHub
Eclim
专为 Eclipse 提供的插件,集成环境使用
GitHub
Deadlock Detector
专注于死锁分析,提供图形化视图。
GitHub
TDA (Thread Dump Analyzer)
支持线程堆栈可视化与排序,死锁检测。
GitHub
jvm-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企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
石小疯
论坛元老
这个人很懒什么都没写!
楼主热帖
解决图片无法设置hover,以设置图片的 ...
SQL的多表查询
解决OpenCV的imread/imwrite在Qt环境不 ...
C# GDI+ 画心形 跳动动画
Hive安装与启动
qrtz表初始化脚本_mysql
几个函数的使用例子:更新VBRK-XBLNR, ...
MySQL基础(DDL、DML、DQL)
堆Pwn:House Of Storm利用手法
在 NGINX 中根据用户真实 IP 进行限制 ...
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
程序人生
公有云
Mysql
前端开发
DevOps与敏捷开发
容器及微服务
SQL-Server
IOS
快速回复
返回顶部
返回列表