1. 程式人生 > >jdk命令行工具(一)

jdk命令行工具(一)

too left failed ccsm enter gcc mon 如果 空間大小

1、概述

  熟悉java開發的人應該都知道在jdk的bin目錄下有許多的工具,這些工具主要用於監視虛擬機和故障處理。這些故障處理工具被Sun公司稱作為“禮物”附贈給JDK的使用者,並在軟件的使用說明中把它們生命為“沒有技術支持並且是實驗性質的”的產品,但事實上,這些工具都非常穩定並且功能強大,能在處理應用程序性能問題、定位故障時發揮很大的作用。

2、命令行工具

2.1、jps:虛擬機進程狀況工具

  jps(JVM process Status Tool)命令雖然比較單一,確實我們平常使用頻率最高的JDK命令行工具,它的作用是列出正在運行的虛擬機進程,並顯示虛擬機執行主類(Main Class,main()函數所在類)名稱以及這些進程的本地虛擬機唯一ID

  命令格式:

    jps [option] [hostid]

jps工具主要選項
選項 作用
-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

jstat工具主要選項
選項 作用
-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命令行工具(一)