Java線上診斷神器Arthas:常用命令詳解!

有關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 命令的一些常見作用:

  1. 監控應用程序的實時指標: 可以顯示應用程序的實時CPU使用率、內存使用情況、線程數等指標,幫助開發人員瞭解應用程序的運行狀態。

  2. 查看應用程序的線程信息: 可以顯示當前應用程序的線程列表,包括線程ID、線程狀態、線程堆棧等信息,方便開發人員進行線程分析和問題排查。

  3. 顯示應用程序的GC情況:可以展示應用程序的垃圾回收(GC)情況,包括GC次數、GC時間、GC類型等信息,幫助開發人員進行GC性能優化和內存泄漏排查。

命令示例

dashboard

執行結果


五、heapdump命令

作用: 可以在應用程序運行時動態生成堆轉儲文件,而無需停止應用程序。生成的堆轉儲文件可以使用其他工具(如MAT、VisualVM等)進行進一步分析和診斷。

生成堆轉儲文件可以幫助開發人員分析應用程序的內存使用情況,包括對象的數量、大小、引用關係等。

通過分析堆轉儲文件,開發人員可以瞭解到應用程序中存在的內存泄漏、對象過多或過大等問題,從而進行優化和調試。

命令示例

heapdump /tmp/dump.hprof

相關文件就會生存在/tmp/dump.hprof,可以導入到MAT進行分析

其它的就不一一演示了,具體的可以看官方文檔。


相關文檔

Arthas官方文檔地址:
arthas idea插件GitHub地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章