有關Arthas基本介紹、安裝部署、arthas idea插件在上篇文章已經介紹過,這裏就不在重述。
文章地址:Java診斷工具Arthas:開篇之watch實戰
上篇重點講了 watch
命令。這篇把剩餘一些重要命令講解演示下。
一、trace命令
作用
:展示方法內部調用路徑,並輸出方法路徑上的每個節點上耗時
命令示例
trace com.zhuangpo.event.service.impl.ArthasTestServiceImpl getPassCheck -n 5 --skipJDKMethod false
參數解釋如下:
trace:命令本身,用於啓動追蹤。
com.zhuangpo.event.service.impl.ArthasTestServiceImpl:要追蹤的類的全限定名
getPassCheck:要追蹤的方法名
-n 5:執行追蹤的次數,這裏設置爲 5 次。
--skipJDKMethod false:是否跳過 JDK 自帶方法的追蹤
執行結果
從執行結果可以看到這個方法的總耗時,還有調用鏈路各個方法和它們的耗時,最耗時的鏈路會有紅色標註
,看去一目瞭然。
二、stack命令
作用
: 就是將一個方法的被調用的鏈路展示出來。調用鏈路是自下而上
命令示例
stack com.zhuangpo.event.service.impl.ArthasTestServiceImpl getPassCheck -n 5
執行結果
很多時候我們都知道一個方法被執行了,但這個方法被執行的路徑非常多,或者你根本就不知道這個方法是從那裏被執行了,此時你需要的是 stack
命令。
三、jad命令
作用
: 是反編譯指定已加載類的源碼
命令示例
jad --source-only com.zhuangpo.event.service.impl.ArthasTestServiceImpl
執行結果
這個還是蠻實用的, 因爲有時我們經常會不確定線上的代碼包否是最新的,這時候就可以通過jad反編譯來看下,是否是最新的代碼。
四、dashboard命令
作用
: 當前系統的實時數據面板
以下是 dashboard 命令的一些常見作用:
-
監控應用程序的實時指標: 可以顯示應用程序的實時CPU使用率、內存使用情況、線程數等指標,幫助開發人員瞭解應用程序的運行狀態。
-
查看應用程序的線程信息: 可以顯示當前應用程序的線程列表,包括線程ID、線程狀態、線程堆棧等信息,方便開發人員進行線程分析和問題排查。
-
顯示應用程序的GC情況:可以展示應用程序的垃圾回收(GC)情況,包括GC次數、GC時間、GC類型等信息,幫助開發人員進行GC性能優化和內存泄漏排查。
命令示例
dashboard
執行結果
五、heapdump命令
作用
: 可以在應用程序運行時動態生成堆轉儲文件,而無需停止應用程序。生成的堆轉儲文件可以使用其他工具(如MAT、VisualVM等)進行進一步分析和診斷。
生成堆轉儲文件可以幫助開發人員分析應用程序的內存使用情況,包括對象的數量、大小、引用關係等。
通過分析堆轉儲文件,開發人員可以瞭解到應用程序中存在的內存泄漏、對象過多或過大等問題,從而進行優化和調試。
命令示例
heapdump /tmp/dump.hprof
相關文件就會生存在/tmp/dump.hprof,可以導入到MAT進行分析
其它的就不一一演示了,具體的可以看官方文檔。