命令行工具 1. jps JVM Process Status Tool,顯示虛擬機進程。 用法 : 參數說明 q:列印進程號 l:列印啟動類的全限定名 m:列印啟動類的 main 方法入參 v:列印指定的虛擬機參數 V:列印類名 例子 : 、`jps l` 2、jstat JVM statisti ...
命令行工具
1. jps
JVM Process Status Tool,顯示虛擬機進程。
用法:jps [-q] [-mlvV]
參數說明
- -q:列印進程號
- -l:列印啟動類的全限定名
- -m:列印啟動類的 main 方法入參
- -v:列印指定的虛擬機參數
- -V:列印類名
例子:jps
、jps -l
2、jstat
JVM statistics Monitoring,對Java虛擬機記憶體進行監控統計。
用法:jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
參數說明
- option:操作,常用的就是
gcutil
,統計垃圾回收情況。 - -t:顯示時間戳列
- -h
:指定多少行顯示標題 - -vmid:進程ID
- -interval:每行輸出的時間間隔
- -count:指定輸出行數
例子:jstat -gcutil -h2 -t 15754 100 5
,表示監控進程號15754的垃圾收集統計值,每隔100ms輸出一行,總共輸出5次,每輸出2次需要重新輸出標題。
[root@root ~]# jstat -gcutil -h2 -t 15754 100 5
Timestamp S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
11296830.0 0.00 100.00 21.80 25.80 98.41 96.33 113648 2500.825 0 0.000 2500.825
11296830.2 0.00 100.00 21.80 25.80 98.41 96.33 113648 2500.825 0 0.000 2500.825
Timestamp S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
11296830.3 0.00 100.00 21.80 25.80 98.41 96.33 113648 2500.825 0 0.000 2500.825
11296830.4 0.00 100.00 21.80 25.80 98.41 96.33 113648 2500.825 0 0.000 2500.825
Timestamp S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
11296830.5 0.00 100.00 21.80 25.80 98.41 96.33 113648 2500.825 0 0.000 2500.825
輸出的指標說明
- S0:survivor 0 已用空間占比
- S1:survivor 1 已用空間占比
- E:Eden 區已用空間占比
- O:老年代已用空間占比
- M:元數據已用空間占比
- CCS:壓縮類空間占比
- YGC:Mirror GC 次數
- YGCT:Mirror GC 消耗時間
- FGC:Full GC 次數
- FGCT:Full GC 消耗時間
- GCT:垃圾回收消耗總時間
3. jinfo
JVM Configuration info,可以實時查看和實時修改虛擬機參數。
用法:jinfo [option] <pid>
參數說明
option:操作
-flag
列印指定的VM參數的值
-flag [+|-]啟用或禁用指定的VM參數
-flag= 修改VM參數
-flags 列印VM參數
-sysprops 列印Java系統配置pid:進程ID
例子:jinfo 15754
、jinfo -flags 15754
4. jmap
JVM Memory Map,用來生成堆棧dump文件。
用法:jmap [option] <pid>
參數說明
option:操作
heap:列印Java堆摘要
histo[:live]:列印java對象堆的直方圖; 如果指定了“live”選項,則僅計算實時對象
dump:生成dump快照pid:進程ID
例子:jmap -heap 15754
、jmap -histo:live 15754
、jmap -dump:live,file=.\heap_dump.hprof 15754
5. jstack
用來生成Java虛擬機當前時刻的線程快照,方便定位線程長時間停頓的問題,比如死鎖、死迴圈、長時間等待等。
用法:jstack -F [-m] [-l] <pid>
參數說明
- -F:強制列印堆棧
- -m:同時列印Java和本地方法的堆棧
- -l:列印關於鎖的附件信息
- pid:進程ID
例子:jstack -l 15754
6. jhat
JVM Heap Analysis Tool,用來分析jmap生成的堆棧日誌,生成HTML文件。一般會用可視化工具來分析堆棧日誌,比如MAT。
7. jcmd
JDK建議使用 jcmd 替代 jstack、jinfo、jmap 等命令。
例子
- jcmd -l:列出所有Java虛擬機。
- jcmd 15754 help:列出該虛擬機支持的命令。
- jcmd 15754 PerfCounter.print:獲取所有性能相關的數據。
- jcmd 15754 GC.class_histogram
可視化監控工具
常用的工具
- jconsole:JDK自帶監控工具
- jvisualvm:JDK自帶監控工具,比jconsole顯示更多監控數據
- jmc:也是JDK自帶監控工具,比jvisualvm顯示更多監控數據
- MAT:Memory Analyzer Tool,Java虛擬機記憶體分析工具,能夠快速的分析dump日誌。
參考資料:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html