jdk命令行工具(一)
1、概述
熟悉java開發的人應該都知道在jdk的bin目錄下有許多的工具,這些工具主要用於監視虛擬機和故障處理。這些故障處理工具被Sun公司稱作為“禮物”附贈給JDK的使用者,並在軟件的使用說明中把它們生命為“沒有技術支持並且是實驗性質的”的產品,但事實上,這些工具都非常穩定並且功能強大,能在處理應用程序性能問題、定位故障時發揮很大的作用。
2、命令行工具
2.1、jps:虛擬機進程狀況工具
jps(JVM process Status Tool)命令雖然比較單一,確實我們平常使用頻率最高的JDK命令行工具,它的作用是列出正在運行的虛擬機進程,並顯示虛擬機執行主類(Main Class,main()函數所在類)名稱以及這些進程的本地虛擬機唯一ID
命令格式:
jps [option] [hostid]
選項 | 作用 |
-q | 只輸出LVMID,省略主類的名稱 |
-m | 輸出虛擬機進程啟動時傳遞給主類main()函數的參數 |
-l | 輸出主類的全名,如果進程執行的是jar包,輸出jar路徑 |
-v | 輸出虛擬機進程啟動是的jvm參數 |
2.2、jstat:虛擬機統計信息監視工具
jstat(JVM statistics Monitoring Tool)是用於監視虛擬機各種運行狀態信息的命令行工具。它可以顯示本地或遠程虛擬機進程中的類加載、內存、垃圾收集、JIT編譯等運行數據,在沒有GUI圖形界面,值提供了純文本控制臺環境的服務器上,它將是運行期定位虛擬機性能問題的首選工具
命令格式:
jstat [option vmid [interval [s|ms] [count]]]
interval:查詢時間間隔
count:查詢次數
如果省略interval和count 參數,則默認只查詢一次。假設需要每250ms查詢一次進程32587的垃圾收集情況,一共查詢20次,那麽命令應該是:
jstat -gc 32587 2590 20
選項 | 作用 |
-class | 監視類裝載、卸載數量、總空間以及所耗費的時間 |
-gc | 監視java堆狀況,包括Eden區、兩個Supervisor區、老年代、永久代等的容量、已用空間、gc時間合計等信息 |
-gccapacity | 監視內容與-gc基本一致,但輸出主要關註Java堆各個區域使用到的最大、最小空間 |
-gcutil | 監視內容與-gc基本一致,但輸出主要關註已使用空間占總空間的百分比 |
-gccause | 與-gcutil功能一樣,但是會額外輸出GC產生的原因 |
-gcnew | 監視新生代GC情況 |
-gcnewcapacity | 監視內容與-gcnew基本一致,但輸出主要關註使用到的最大、最小空間 |
-gcold | 監視老年代GC情況 |
-gcoldcapacity | 監視內容與-gcold基本一致,但輸出主要關註使用到的最大、最小空間 |
-gcmetacapacity | 輸出永久代使用的最大、最小空間 |
-compiler | 輸出JIT編譯器編譯過的方法、耗時等信息 |
-printcompilation | 輸出已經被JIT編譯的方法 |
各工具選項輸出內容詳解
-class Option:
列名 | 描述 |
Loaded | 加載class的數量 |
Bytes | 所占用空間大小 |
unloaded | 未加載class的數量 |
Bytes | 未加載占用空間 |
Time | 執行類加載和卸載操作的時間。 |
-gc Option:
列名 | 描述 |
S0C | Supervisor0當前的容量(KB) |
S1C | Supervisor1當前的容量(KB) |
S0U | Survivor space 0 使用的容量(KB) |
S1U | Survivor space 1 使用的容量(KB) |
EC | Eden space 當前的容量(KB) |
EU | Eden space 使用的容量(KB) |
OC | old space當前的容量(KB) |
OU | old space使用的容量(KB) |
PC | permanent space當前的容量(KB) |
PU | permanent space使用的容量(KB) |
YGC | young generation垃圾回收的次數 |
YGCT | young generation垃圾回收的時間 |
FGC | full GC次數 |
FGCT | full GC時間 |
GCT | 總的垃圾回收時間 |
-gccapacity Option
列名 | 描述 |
NGCMN | 新生代最小容量(KB) |
NGCMX | 新生代最大容量(KB) |
NGC | 新生代當前容量(KB) |
S0C | Supervisor0當前的容量(KB) |
S1C | Supervisor1當前的容量(KB) |
EC | Eden space 當前的容量(KB) |
OGCMN | 老年代最小容量(KB) |
OGCMX | 老年代最大容量(KB) |
OGC | 老年代當前容量(KB) |
OC | 老年區當前容量(KB) |
PGCMN | 永久代最小容量(KB) |
PGCMX | 永久代最大容量(KB) |
PGC | 當前永久代容量(KB) |
PC | 當前永久區容量(KB) |
YGC | Young generation 垃圾回收的次數 |
FGC | Full GC次數 |
-gcutil Option
列名 | 描述 |
S0 | S0區使用百分比 |
S1 | S1區使用百分比 |
E | Eden 區使用百分比 |
O | Old區使用百分比 |
P | Permanent 區使用百分比 |
YGC | young generation垃圾回收次數 |
YGCT | young generation垃圾回收時間 |
FGC | full GC次數 |
FGCT | full GC時間 |
GCT | 總共的垃圾回收時間 |
-gccause Option
列名 | 描述 |
LGCC | 上一次產生gc的原因 |
GCC | 當前gc原因 |
-gcnew
列名 | 描述 |
S0C | survivor space 0當前容量(KB) |
S1C | survivor space 1當前容量(KB) |
S0U | survivor space 0使用容量(KB) |
S1U | survivor space 1使用容量(KB) |
TT | 閥值, 用於控制對象在新生代存活的最大次數 |
MTT | 最大閥值 |
DSS | 預期的survivor 大小(KB) |
EC | 當前Eden區的容量(KB) |
EU | Eden區使用的容量(KB) |
YGC | young generation垃圾回收次數 |
YGCT | young generation垃圾回收時間 |
-gcnewcapacity
列名 | 描述 |
NGCMN | new generation最小容量(KB) |
NGCMX | new generation最大容量(KB) |
NGC | new generation當前容量(KB) |
S0CMX | survivor space 0最大容量(KB) |
S0C | survivor space 0當前容量(KB) |
S1CMX | survivor space 1最大容量(KB) |
S1C | survivor space 1當前容量(KB) |
ECMX | eden space 最大容量(KB) |
EC | eden space 當前容量(KB) |
YGC | young generation GC次數 |
FGC | Full GC次數 |
-gcold
列名 | 描述 |
MC | 方法區容量(KB) |
MU | 方法區當前使用容量(KB) |
CCSC | 壓縮類空間容量(KB) |
CCSU | 壓縮類空間當前使用容量(KB) |
OC | old space當前容量(KB) |
OU | old space使用容量(KB) |
YGC | young generation GC 次數 |
FGC | full GC次數 |
FGCT | full GC時間 |
GCT | 總的gc時間 |
-gcoldcapacity
列名 | 描述 |
OGCMN | old generation最小容量(KB) |
OGCMX | old generation最大容量(KB) |
OGC | old generation當前容量(KB) |
OC | old space容量(KB) |
YGC | young generation GC次數 |
FGC | full GC次數 |
FGCT | full GC時間 |
GCT | 總的gc時間 |
-gcmetacapacity
列名 | 描述 |
MCMN | 最小元數據容量(KB) |
MCMX | 最大元數據容量(KB) |
MC | 當前元數據空間大小(KB) |
CCSMN | 最小壓縮類空間大小(KB) |
CCSMX | 最大壓縮類空間大小(KB) |
CCSC | 當前壓縮類空間大小(KB) |
YGC | young generation GC次數 |
FGC | full GC次數 |
FGCT | full GC時間 |
GCT | 總的gc時間 |
-compiler
列名 | 描述 |
Compiled | 編譯任務執行次數 |
Failed | 編譯任務執行失敗次數 |
Invalid | 編譯任務執行失效數量 |
Time | 編譯任務消耗時間 |
FailedType | 最後一個編譯失敗任務的類型 |
FailedMethod | 最後一個編譯失敗任務所在的類及方法 |
-printcompilation
列名 | 描述 |
Compiled | 最近編譯方法的數量 |
Size | 最近編譯方法的容量(KB) |
Type | 最近編譯方法的編譯類型 |
Method | 方法名標識 |
jdk命令行工具(一)