常用的虛擬機器效能監控和故障處理工具
1. jps : 虛擬機器程序狀況工具
可以列出正在執行的虛擬機器程序,並顯示虛擬機器執行主類名稱,以及這些程序的本地虛擬機器唯一ID(LVMID)。
命令格式: jps [option] [hostid]
option: -q:只輸出LVMID,省略主類的名稱;
-m: 輸出虛擬機器程序啟動時傳給主類main()函式的引數
-l:輸出主類的全名,如果程序執行的是Jar包,輸出Jar路徑
-v:輸出虛擬機器程序啟動時JVM引數
例如: jps -l
C:\Program Files\Java\jdk1.8.0_73\bin>jps
3088 Jps
7988 Main
2. jstat:虛擬機器統計資訊監視工具
用於監視虛擬機器各種執行狀態資訊的命令列工具。它可以顯示本地或者遠端虛擬機器程序中的類裝載、記憶體、垃圾收集、JIT編譯等執行資料。
命令格式:
jstat [option vmid [interval [s | ms] [count] ] ]
interval代表需要查詢的實際間隔,count代表查詢的次數。
例如: jstat -gc 2443 250 20
每隔250毫秒查詢現場2443程序垃圾收集情況20次。
個引數詳解見:https://www.cnblogs.com/baihuitestsoftware/articles/6408381.html
3.jinfo :Java配置資訊工具
作用是實時檢視和調整虛擬機器各項引數。
命令格式: jinfo [option] pid
4.jmap : Java記憶體映像工具
作用:生成堆轉儲快照。
5.jhat : 虛擬機器堆轉儲快照分析工具
6. jstack : Java對戰跟蹤工具
用於生成虛擬機器當前時刻的現場快照。現場快照就是當前虛擬機器內每一條執行緒正在執行的方法堆疊的幾個,生成執行緒快照的主要目的是定位執行緒出現長時間停頓的原型,如執行緒間鎖死、死迴圈、請求外部資源導致的長時間等待等都是導致執行緒長時間停頓的原因。
命令格式: jstack [ option ] vmid
option : -F 當正常輸出的請求不被響應式,強制輸出執行緒對戰
-l 除堆疊外,顯示關於鎖的附加資訊
-m 如果呼叫到本地方法的話,可以顯示C/C++的堆疊
另外,在JDK1.5中,我們還可以通過Thread的getAllStackTraces()方法用於獲取虛擬機器中所有執行緒的StackTraceElement物件,通過簡單的幾行程式碼就完成jstack的大部分功能。