天天看點

JVM虛拟機性能監控與故障處理工具

1、jps:虛拟機程序狀況工具 jps [ options ] [ hostid ]

-q     隻輸出LVMID,省略主類名稱 -m    輸出虛拟機程序啟動時傳遞給主類main()函數的參數 -l      輸出主類的全名,如果程序執行的是jar包,輸出jar路徑 -v     輸出虛拟機程序啟動時的JVM參數

2、jstat:虛拟機統計資訊監視工具 jstat [ option vmid [ interval [ s|ms ] [ count ] ] ] 參數interval和count代表查詢間隔和次數,如果省略這兩個參數,說明隻查詢一次。假設需要每次250毫秒查詢一次程序2764垃圾收集的狀況,一共查詢20次,那指令如下:jstat -gc 250 20 2764 option說明如下: -class                監視類裝載、解除安裝數量、總空間及類裝載所耗費的時間 -gc                    監視java堆狀況,包括Eden區、2個survivor區、老年代、永久代等的容量,已用                                       空間、GC時間合計等資訊 -gccapacity     監視内容與-gc基本相同,但是輸出主要關注java堆各個區域使用到得最大和最小空間 -gcutil              監視内容和-gc基本相同,但輸出主要關注已使用空間占總空間的百分比 -gccause          與-gcutil功能一樣,但是會額外輸出導緻上一次GC産生的原因 -gcnew             監視新生代GC的狀況 -gcnewcapacity        監視内容與-gcnew基本相同,輸出主要關注使用到得最大和最小空間 -gcold                        監視老年代GC的狀況 -gcoldcapacity          監視内容與-gcold基本相同,輸出主要關注使用到得最大和最小空間 -gcpermcapacity      輸出永久代使用到得最大和最小空間 -compiler                   輸出JIT編譯器編譯過的方法、耗時等資訊 -printcompilation     輸出已經被JIT編譯的方法

3、jinfo:java配置資訊工具 實時檢視和調整虛拟機的各項參數,使用jps指令的-v參數可以檢視虛拟機器的顯式指定的參數清單,但是如果想知道未被顯式指定的參數的系統預設值,除了找資料外,就隻能使用jinfo的-flag選項進行查詢了。 jinfo [ option ]   pid

4、jmap:java記憶體映像工具 jmap指令用于生成堆轉儲快照(一般稱為heapdump或者dump檔案)。 jmap [ option ] vmid option說明如下: -dump              生成java堆轉儲快照。格式為:-dump:[live,]format=b,file=<filename>,其中live子參                                  數說明是否隻dump出存活的對象 -finalizerinfo    顯示在F-Queue中等待Filalizer線程執行finalize方法的對象,隻在linux/solaris平台下有                           效 -heap                顯示java堆詳細資訊,如使用哪種回收器、參數配置、分代狀況等,隻在linux/solaris平台                               下有效 -histo                顯示堆中統計資訊,包括類、執行個體數量和合計容量 -permstat         以ClassLoader為統計口徑顯示永久代記憶體狀态。隻在linux/solaris平台下有效 -F                       當虛拟機程序對-dump選項沒有響應時,可使用這個選項強制生成dump快照。,隻在                                    linux/solaris平台下有效

5、jhat:虛拟機堆轉儲快照分析工具 jhat指令與jmap搭配使用,來分析jmap生成的堆轉儲快照。jhat内置了一個微型的http/html伺服器,生成dump檔案的分析結果後,可以在浏覽器中檢視。 jhat dump檔案

6、jstack:java堆棧跟蹤工具 jstack指令用于生成虛拟機目前時刻的線程快照(一般稱為threaddump或javacore檔案)。線程快照就是目前虛拟機内每一條線程正在執行的方法堆棧的集合,生成線程快照的主要目的是定位線程出現長時間停頓的原因,如線程間死鎖、死循環、請求外部資源導緻的長時間等待等都是導緻線程長時間停頓的常見原因。線程出現停頓的時候通過jstack來檢視各個線程的調用堆棧,就可以知道沒有響應的線程到底在背景做些什麼事情,或者等待着什麼資源。 jstack [ option ] vmid option選項說明如下: -F    當正常輸出的請求不被響應時,強制輸出線程堆棧 -l     除堆棧外,顯示關于鎖的附加資訊 -m   如果調用到本地方法的話,可以顯示C/C++的堆棧