本文內容來自《深刻理解Java虛擬機》,主要是自身學習,用於記錄重點,方便回憶,複習。對應《深刻理解Java虛擬機》第四章,JDK提供的經常使用工具。java
JDK的bin目錄下,用於查詢LVMID(列出虛擬機進程號)linux
參數:bash
-q 只顯示進程號。 函數
-m 輸出啓動時傳遞給主類main()函數的參數。工具
-l 輸出主類的全名,若是進程執行的jar包,則輸出jar包路徑。學習
-v 輸出虛擬機啓動時JVM參數spa
能夠顯示本地或者遠程虛擬機進程中類的裝載、內存、垃圾收集、JIT編譯等運行數據。線程
格式:3d
jstat option vmid [interval [count]]複製代碼
若是查詢本地,vmid爲jps命令中查出來的LVMID,若是遠程,則vmid爲code
[protocol:][//]lvmid[@localhost[:port]/servername]複製代碼
interval爲監控的間隔時間,count爲監控的次數。
經常使用option:
-class 監視類裝載、卸載數量、總空間、類裝載所消耗的時間
-gc 監控Java堆情況,各區使用量,gc次數,gc時間等信息
-gcutil 做用通-gc,顯示的數據爲百分比。
-gcnew 新生代GC狀況
-gcold 老年代GC狀況
例子:
S0、S1:Survivor區、E Edent區、O:老年區、YGC:MinorGC次數、YGCT:MinorGC的時間、FGC:Full GC次數、FGCT:Full GC的時間、GCT:GC總時間
除生成dump文件外,還可查詢finalize執行隊列、Java堆信息。
-dump 生成Java堆轉存儲快照,格式以下
jmap -dump:format=b,file=filename 3039
複製代碼
-finalizeinfo 只能linux平臺下使用,顯示真正等待F-Queue中等待執行finalize方法的對象。
-heap 只能linux平臺下使用,顯示Java堆詳細信息。
附:
-XX:HeapDumpOnOutOfMemoryError參數、讓虛擬機在OOM異常時自動生成dump文件
用於生成虛擬機當前時刻的線程快照(threaddump、javacore文件)
jstack [option] vmid
參數:
-F 正常輸出的請求不被響應時,強制輸出線程堆棧。
-l 除堆棧外,顯示關於鎖的附加信息。
-m 若是調用本地方法的話,能夠顯示C/C++的堆棧。
啓動命令文件爲JavaHome/bin/jconsole,可用於監控內存、cpu、線程、是否死鎖等。
啓動命令文件爲 JavaHome/bin/jvisualvm