本文僅測試及學習Arthas命令的使用方式,對原理不做探討,有興趣的胖友可以戳下方美團博客的鏈接,講解的十分不錯.
相關鏈接
美團博客關於java動態追蹤的一篇文章,講解了部分原理,推薦閱讀
介紹
arthas是什麼?能做什麼?
這裏copy官方文檔的一段話來告訴大家.
Arthas 是Alibaba開源的Java診斷工具,深受開發者喜愛。
當你遇到以下類似問題而束手無策時,Arthas可以幫助你解決:
- 這個類從哪個 jar 包加載的?爲什麼會報各種類相關的 Exception?
- 我改的代碼爲什麼沒有執行到?難道是我沒 commit?分支搞錯了?
- 遇到問題無法在線上 debug,難道只能通過加日誌再重新發布嗎?
- 線上遇到某個用戶的數據處理有問題,但線上同樣無法 debug,線下無法重現!
- 是否有一個全局視角來查看系統的運行狀況?
- 有什麼辦法可以監控到JVM的實時運行狀態?
Arthas支持JDK 6+,支持Linux/Mac/Winodws,採用命令行交互模式,同時提供豐富的 Tab 自動補全功能,進一步方便進行問題的定位和診斷。
安裝
推薦使用:
wget https://alibaba.github.io/arthas/arthas-boot.jar
java -jar arthas-boot.jar
選擇已經運行的java進程即可.
之後會進入arthas命令行,也可以選擇在瀏覽器打開127.0.0.1:8563
,通過webUI來操作.
功能
dashboard
可以查看當前JVM的內存信息以及線程信息.
thread
直接使用可以列出所有的線程,也可以使用thread 1
,來查看具體某個線程的堆棧信息.(後面的數字爲線程ID).
jad
反編譯某個class,jad demo.MathGame
,會在命令行打印出反編譯之後的源碼.
watch
通過watch
命令來持續觀測某一個方法的返回值.
watch demo.MathGame primeFactors returnObj
退出
使用exit/quit命令,暫時退出,後續可以繼續連接.
使用shutdown
命令徹底斷開連接並reset class文件.
sc,sm
查看對應的類加載信息,方法加載信息.
trace
查看方法的內部調用路徑,並返回每個節點的耗時情況.
stack
輸出當前方法被調用的調用路徑
完.
ChangeLog
2019-03-07 完成以上皆爲個人所思所得,如有錯誤歡迎評論區指正。
歡迎轉載,煩請署名並保留原文鏈接。
聯繫郵箱:[email protected]
更多學習筆記見個人博客------>呼延十