列出正在運行的虛擬機進程,并顯示虛擬機執行主類(Main Class,main()函數所在的類)名稱以及這些進程的本地虛擬機唯一ID (Local Virtual Machine Identifier,LVMID)
命令格式 jps -option -q 只輸出LVMID,省略主類的名稱 -m 輸出虛擬機進程啟動時傳遞給主類main()函數的參數 -l 輸出主類的全名, 如果進程執行的是Jar包,輸出Jar路徑 -v 輸出虛擬機進程啟動時JVM參數用于監視虛擬機各種運行狀態信息的命令行工具.顯示本地或者遠程虛擬機進程中的類裝載,內存,垃圾收集JIT編譯等運行數據
命令格式 jstat -option VMID [interval] [count] -class 監視類裝載,卸載數量,總區間及類裝載所耗費的時間 -gc 監視java堆狀況, 包括Eden,兩個survivor,老年代,永久代等的容量 -gccapacity 監視內容與-gc基本相同,但輸出主要關注Java堆各個區域使用的最大,最小空間 -gcutil 監視內容與-gc基本相同,但輸出主要關注已使用空間占總空間的百分比 -gccause 監視-gcutl功能一樣,但是會額外輸出導致上一次GC產生的原因 -gcnew 監視新生帶GC狀況 -gcold 監視老年代GC狀況 -compiler 輸出JIT編譯器編譯過的方法,耗時等信息實時地查看和調整虛擬機各項參數
命令格式 jinfo -option VMID jinfo -flag CMSInitiatingOccupancyFraction 1444獲取dump文件,finalize執行隊列,java堆和永久代詳細信息 如空間使用率和使用哪種收集器
命令格式 jmap -option VMID -dump 生成Java堆轉儲快照 -fanalizerinfo 顯示在F-Qucue中等待Finalizer線程執行finalize方法的對象 -heap 顯示Java堆詳細信息,如使用哪種回收器,參數配置,分代狀況 -histo 顯示堆中對象統計信息,包括類,實例數量,合計容量 -permstat 以ClassLoader為統計口徑顯示永久代內存狀態與jmap搭配使用 來分析jmap生成的堆轉儲快照
用于生成虛擬機當前時刻的線索快照
命令格式 jstack -option VMID -F 當正常輸出的請求不被響應時,強制輸出線程堆棧 -l 除堆棧外,顯示關于鎖的附加信息 -m 如果調用到本地方法的話 可以線索C/C++的堆棧新聞熱點
疑難解答