快速入门Java线程栈分析
更新时间:
本文将演示如何通过ATP的Java线程栈分析功能,分析Java应用中线程的运行情况。
1. 生成数据源,上传到ATP
a. 用户可以通过JDK中自带的jstack命令创建Java应用的线程快照,如下:
# 生成线程快照并输出到 jstack.log
$ jstack <进程号> > jstack.log
b. 创建成功后,将文件上传至ATP并分析。
2. 使用ATP线程栈分析
下面以 spring-petclinic 应用为例,在这个项目启动后创建线程栈快照并上传至ATP进行分析。
以下是各视图的基本介绍。
基本信息
基本信息视图中包含:
快照生成的时间(非上传时间)
JVM 版本信息
JNI 引用数量
线程死锁数量
同时会按照线程状态和类型对所有线程作分类。
线程信息
线程信息视图中包含所有线程的信息:如栈,CPU 等。注意有些信息(如 CPU,Elapsed)只有高版本的 JDK 中才会输出。
用户可以通过线程名、线程 id 等字段进行查找。
线程池
线程池视图基于线程名对所有线程作分类,并按状态统计数量分布,可以用于协助排查线程泄漏相关的问题。
方法热度
方法热度视图使用火焰图可视化所有的线程栈,帮助开发者分析应用中可能存在的热点行为。
请注意火焰图是按照栈的数量进行聚合,越宽不一定代表是热点方法,比如很多线程阻塞在同一个Java方法上是正常的现象。
3. 结论
通过ATP Java线程栈分析功能,可以帮助开发者分析应用中线程的运行情况。
文档内容是否对您有帮助?