这是一个简单的本地jstack/jcmd输出信息分析工具,用于分析Java应用程序的线程堆栈信息。
- jstack/jcmd数据解析:解析标准的jstack/jcmd输出,提取线程信息、状态和堆栈跟踪
- 线程状态识别:识别线程状态(RUNNABLE、BLOCKED、WAITING、TIMED_WAITING等)
- CPU使用率分析:基于jstack/jcmd输出中的cpu和elapsed时间数据,计算线程的CPU使用率
- 死锁检测与分析:检测并分析Java级别的死锁信息
- 数据统计:提供线程状态分布统计、CPU使用率统计等基本指标
- 多视图展示:
- 线程堆栈信息视图:以卡片形式展示每个线程的详细信息
- 线程指标表格视图:以表格形式展示线程的关键指标
- 死锁报告视图:展示检测到的死锁信息及其线程关系
- 线程状态筛选:可以根据线程状态筛选显示结果
- 线程变化分析:对比多个线程信息文件,分析线程在不同时刻的CPU使用情况变化
- 线程唯一标识:使用线程名称和tid组合作为唯一标识符,准确跟踪同名线程
本工具为纯前端应用,不依赖任何外部服务器,但需要以下环境:
- 现代浏览器(Chrome、Firefox、Safari、Edge等)
- 支持JavaScript的环境
- 无特殊依赖,所有功能均为原生JavaScript实现
- 克隆或下载本项目到本地计算机
- 在浏览器中打开
index.html
文件 - 即可开始使用工具
-
准备jstack/jcmd数据:
- 在运行Java应用程序的服务器上执行以下命令获取jstack数据:
jstack <pid> > thread_dump.txt
- 或者使用jcmd:
jcmd <pid> Thread.print > thread_dump.txt
- 其中
<pid>
是Java进程的进程ID
- 在运行Java应用程序的服务器上执行以下命令获取jstack数据:
-
导入数据:
- 方式一:复制线程信息输出内容,粘贴到"粘贴线程信息"文本框中
- 方式二:点击"选择文件"按钮,上传包含线程信息数据的文本文件
-
开始分析:
- 点击"开始分析"按钮,系统将自动解析数据并展示分析结果
-
查看结果:
- 默认显示"线程堆栈信息"视图,展示每个线程的详细信息
- 点击"线程指标表格"页签,可查看线程指标表格
- 点击"死锁报告"页签,可查看检测到的死锁信息
- 准备多个时间点的线程信息文件
- 导入数据:
- 选择多个线程信息文件进行上传
- 开始对比分析:
- 点击"开始对比分析"按钮,系统将对比分析线程在不同时刻的变化
- 查看结果:
- 展示线程在不同时刻的CPU使用情况变化
- 本工具完全在浏览器端运行,不会上传任何数据到外部服务器,保证数据隐私
- 为了获得CPU使用率分析功能,jstack/jcmd数据需要包含线程的cpu和elapsed时间信息
- 工具目前仅支持标准的jstack/jcmd输出格式
- 对于非常大的jstack/jcmd文件,可能需要较长时间进行分析
本工具采用纯前端技术实现:
- HTML5 + CSS3 + 原生JavaScript
- 无任何外部依赖库
所有分析功能均由前端JavaScript实现,包括线程解析、CPU使用率计算和死锁检测。