快速入門Java線程棧分析
更新時間:
本文將演示如何通過ATP的Java線程棧分析功能,分析Java應用中線程的運行情況。
1. 生成數(shù)據(jù)源并上傳至ATP
a. 使用JDK中自帶的jstack命令創(chuàng)建Java應用的線程快照,如下:
# 生成線程快照并輸出到 jstack.log
$ jstack <進程號> > jstack.log
b. 創(chuàng)建成功后,將文件上傳至ATP并分析。
2. 使用ATP線程棧分析
下面以 spring-petclinic 應用為例,在這個項目啟動后創(chuàng)建線程棧快照并上傳至ATP進行分析。
以下是各視圖的基本介紹。
視圖選項 | 簡介 |
基本信息 | 基本信息視圖中包含:
同時會按照線程狀態(tài)和類型對所有線程進行分類。 |
線程信息 | 線程信息視圖中包含所有線程的信息:
說明 部分信息(如 CPU,Elapsed)只有在高版本的 JDK 中才會輸出。 用戶可以通過線程名、線程 id 等字段進行查找。 |
線程池 | 線程池視圖基于線程名對所有線程進行分類,并按狀態(tài)統(tǒng)計數(shù)量分布,可以用于協(xié)助排查線程泄漏相關(guān)的問題。 |
方法熱度 | 方法熱度視圖使用火焰圖可視化所有的線程棧,幫助開發(fā)者分析應用中可能存在的熱點行為。 說明 火焰圖是按照棧的數(shù)量進行聚合,越寬不一定代表是熱點方法,比如很多線程阻塞在同一個Java方法上是正常的現(xiàn)象。 |
3. 結(jié)論
通過ATP Java線程棧分析功能,可以幫助開發(fā)者分析應用中線程的運行情況。
文檔內(nèi)容是否對您有幫助?