jvm系列--監控工具
在linux環境下
一.uptime
系統時間,執行時間
連線數:
每一個終端算一個連線
1,5,15分鐘內的系統平均負載
執行佇列中的平均程序數
二.vmstat
可以統計系統的CPU,記憶體,swap,io等情況
vmstat 1 4
三.top
cpu記憶體
每個程序佔CPU情況
四.pidstat
監控CPU,IO,記憶體
-p 指定程序 –u 監控CPU 每秒取樣 一共3次 -t 顯示執行緒
TID 執行緒id CPU哪個核
五.windows
工作管理員:cpu ,io
perfmon
pslist:顯示java程式的執行情況
六.java自帶工具
1.jps
列出java程序, -q 只輸出程序id -m 輸出Java程序(主函式)的引數 -l 可以用於輸出主函式的完整路徑 -v可以顯示傳遞給JVM的引數
2.jinfo
檢視java應用程式的擴充套件引數
-flag <name>:列印指定JVM的引數值
-flag [+|-]<name>:設定指定JVM引數的布林值
-flag <name>=<value>:設定指定JVM引數的值
jinfo -flag PrintGCDetails 2972
3.jmap
生成java應用程式的堆快照和物件的統計資訊
4.jstack
列印執行緒dump
-l 列印鎖資訊 -m 列印java和native的幀資訊 -F強制dump,當jstack沒有響應時候使用
5.JConsole
圖形化監控工具
可以檢視Java應用程式的執行概況,監控堆資訊、永久區使用情況、類載入情況等
6.Visual VM
Visual VM是一個功能強大的多合一故障診斷和效能監控的視覺化工具
七.例子
執行一程式ThreadBlockMain,期望輸出Hello,World ,結果在程式執行後,程式卡死,沒有預期輸出。
1.jps 檢視程式程序
2.jstack 輸出dump
3.top 檢視佔用cpu最多的程序id
4.pidstat 檢視程序id下執行緒佔用cpu 最多 ,TID執行緒id轉換成16進位制 ,nid
5.jstack 程序id 輸出資訊,查詢nid,定位問題