當前位置:網站首頁>JVM調試工具-Arthas
JVM調試工具-Arthas
2022-06-24 07:04:51【Angryshark_128】
下載地址
鏈接:https://pan.baidu.com/s/1CMAR1wto-vSLIeKtlCsXJQ
提取碼:naza
啟動Arthas
> java -jar arthas-boot.jar --target-ip=0.0.0.0
輸入序號選擇要查看的進程
執行該程序的用戶需要和目標進程具有相同的權限。比如以admin用戶來執行:sudo su admin && java -jar arthas-boot.jar 或 sudo -u admin -EH java -jar arthas-boot.jar。
如果attach不上目標進程,可以查看~/logs/arthas/ 目錄下的日志。
瀏覽器查看
監控相關
執行方法監控-monitor 類名 方法
[[email protected]]> monitor com.*.*.PointerDao.SnidModel toString
查看函數返回值-watch 類名 函數名 returnObj
[[email protected]]> watch com.oidd.*.Common.* encrypt returnObj
查看進程信息-dashboard
[[email protected]]> dashboard
方法內部調用路徑,並輸出方法路徑上的每個節點上耗時-trace
輸出當前方法被調用的調用路徑-stack
方法執行數據的時空隧道,記錄下指定方法每次調用的入參和返回信息,並能對這些不同的時間下調用進行觀測-tt
生成火焰圖-profiler
profiler 命令支持生成應用熱點的火焰圖。本質上是通過不斷的采樣,然後把收集到的采樣結果生成火焰圖。
profiler 命令基本運行結構是 profiler action [actionArg]
參數說明
參數名稱 參數說明
action 要執行的操作
actionArg 屬性名模式
[i:] 采樣間隔(單比特:ns)(默認值:10'000'000,即10 ms)
[f:] 將輸出轉儲到指定路徑
[d:] 運行評測指定秒
[e:] 要跟踪哪個事件(cpu, alloc, lock, cache-misses等),默認是cpu
啟動profiler
$ profiler start
Started [cpu] profiling
默認情况下,生成的是cpu的火焰圖,即event為cpu。可以用–event參數來指定。
獲取已采集的sample的數量
$ profiler getSamples
23
查看profiler狀態
$ profiler status
[cpu] profiling is running for 4 seconds
可以查看當前profiler在采樣哪種event和采樣時間。
停止profiler
生成svg格式結果
$ profiler stop
profiler output file: /tmp/demo/arthas-output/20191125-135546.svg
OK
默認情况下,生成的結果保存到應用的工作目錄下的arthas-output目錄。可以通過 --file參數來指定輸出結果路徑。比如:
$ profiler stop --file /tmp/output.svg
profiler output file: /tmp/output.svg
OK
生成html格式結果
默認情况下,結果文件是svg格式,如果想生成html格式,可以用–format參數指定:
$ profiler stop --format html
profiler output file: /tmp/test/arthas-output/20191125-143329.html
OK
或者在–file參數裏用文件名指名格式。比如–file /tmp/result.html 。
通過瀏覽器查看arthas-output下面的profiler結果
默認情况下,arthas使用3658端口,則可以打開: http://localhost:3658/arthas-output/ 查看到arthas-output目錄下面的profiler結果
點擊可以查看具體的結果:
如果是chrome瀏覽器,可能需要多次刷新。
JVM相關命令
打印指定線程棧-thread 線程ID
[[email protected]]> thread 2742303
查看JVM信息-jvm
[[email protected]]> jvm
查看JVM環境變量-sysenv
[[email protected]]> sysenv
查看JVM系統屬性-sysprop
[[email protected]]> sysprop
查看JVM診斷配置-vmoption
[[email protected]]> vmoption
查看當前 JVM 的Perf Counter信息-perfcounter
查看和修改logger-logger
查看類的靜態屬性-getstatic
執行ognl錶達式-ognl
查看 Mbean 的信息-mbean
查看堆信息-heapdump
類相關命令
查看已加載的類-sc 通配符
[[email protected]]> sc *
查看已加載的方法-sm 通配符
[[email protected]]> sm *
反編譯類—jad 類名
[[email protected]]> jad com.*.*.Common.GlobalVariable
內存編譯器,內存編譯.java文件為.class文件-mc
加載外部的.class文件,redefine到JVM裏-redefine
dump已加載類的 byte code 到特定目錄-dump
查看classloader的繼承樹,urls,類加載信息,使用classloader去getResource-classloader
其他基礎命令
help——查看命令幫助信息
cat——打印文件內容,和linux裏的cat命令類似
echo–打印參數,和linux裏的echo命令類似
grep——匹配查找,和linux裏的grep命令類似
tee——複制標准輸入到標准輸出和指定的文件,和linux裏的tee命令類似
pwd——返回當前的工作目錄,和linux命令類似
cls——清空當前屏幕區域
session——查看當前會話的信息
reset——重置增强類,將被 Arthas 增强過的類全部還原,Arthas 服務端關閉時會重置所有增强過的類
version——輸出當前目標 Java 進程所加載的 Arthas 版本號
history——打印命令曆史
quit——退出當前 Arthas 客戶端,其他 Arthas 客戶端不受影響
stop——關閉 Arthas 服務端,所有 Arthas 客戶端全部退出
keymap——Arthas快捷鍵列錶及自定義快捷鍵
版權聲明
本文為[Angryshark_128]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2022/175/202206240050385302.html
邊欄推薦
猜你喜歡
隨機推薦
- 你真的理解LDO的輸出電容嗎!?
- 二維激光SLAM( 使用Laser Scan Matcher )
- MySQL使用ReplicationConnection導致的連接失效分析與解决
- Go寫文件的權限 WriteFile(filename, data, 0644)?
- 在線文本過濾小於指定長度工具
- quartus調用&設計D觸發器——仿真&時序波驗證
- 【深入理解TcaplusDB技術】TcaplusDB構造數據
- 等保備案是什麼意思?應該去哪裏辦理備案?
- 建議自查!MySQL驅動Bug引發的事務不回滾問題,也許你正面臨該風險!
- 百萬獎金等你來拿,首届中國元宇宙創新應用大賽聯合創業黑馬火熱招募中!
- 力扣解法匯總513-找樹左下角的值
- 快速排序的簡單理解
- 139. 單詞拆分
- Web篇_01 了解web開發
- ADB 按鍵名、按鍵代碼數字、按鍵說明對照錶
- leetcode:面試題 08.13. 堆箱子【自頂而下的dfs + memory or 自底而上的排序 + dp】
- 解答02:Smith圓為什麼能“上感下容 左串右並”?
- MySQL的 安裝、配置、卸載
- 【ESP8266-01s】獲取天氣,城市,北京時間
- Redis 集群
- 【華中科技大學】考研初試複試資料分享
- 傑理之串口設置好以後打印亂碼,內部晶振沒有校准【篇】
- 【NOI2014】15.起床困難綜合症【二進制】
- 函數的定義和函數的參數
- JDBC 在性能測試中的應用
- 35歲危機?內卷成程序員代名詞了…
- SQL聯合查詢(內聯、左聯、右聯、全聯)的語法
- Outlook開機自啟+關閉時最小化
- 北大、加州伯克利大學等聯合| Domain-Adaptive Text Classification with Structured Knowledge from Unlabeled Data(基於未標記數據的結構化知識的領域自適應文本分類)
- 為什麼你的數據圖譜分析圖上只顯示一個值?
- sql server常用sql
- MySQL事務隔離
- STM32-------外部中斷
- 2022年信息安全工程師考試知識點:訪問控制
- 高仿書旗小說 Flutter 版,學起來
- 工作中一些常用的工具函數
- docker 部署redis
- 如何利用數倉創建時序錶
- version `ZLIB_1.2.9‘ not found (required by /lib64/libpng16.so.16)
- 【Flutter】如何使用Flutter包和插件