Java的jstat命令使用詳解

語言: CN / TW / HK

jstat命令簡介

jstat(Java Virtual Machine Statistics Monitoring Tool)是JDK提供的一個可以監控Java虛擬機器各種執行狀態資訊的命令列工具。它可以顯示Java虛擬機器中的類載入、記憶體、垃圾收集、即時編譯等執行狀態的資訊。

jstat命令引數

命令語法:

jstat generalOptions
jstat outputOptions [-t] [-h<lines>] <vmid> [<interval> [<count>]]

命令引數說明:

  • generalOptions :通用選項,如果指定一個通用選項,就不能指定任何其他選項或引數。它包括如下兩個選項:
    • -help :顯示幫助資訊。
    • -options :顯示 outputOptions 引數的列表。
  • outputOptions :輸出選項,指定顯示某一種Java虛擬機器資訊。
  • -t :把時間戳列顯示為輸出的第一列。這個時間戳是從Java虛擬機器的開始執行到現在的秒數。
  • -h n :每顯示n行顯示一次表頭,其中n為正整數。預設值為 0,即僅在第一行資料顯示一次表頭。
  • vmid :虛擬機器唯一ID(LVMID,Local Virtual Machine Identifier),如果檢視本機就是Java程序的程序ID。
  • interval :顯示資訊的時間間隔,單位預設毫秒。也可以指定秒為單位,比如:1s。如果指定了該引數,jstat命令將每個這段時間顯示一次統計資訊。
  • count :顯示資料的次數,預設值是無窮大,這將導致jstat命令一直顯示統計資訊,直到目標JVM終止或jstat命令終止。

輸出選項

如果不指定通用選項(generalOptions),則可以指定輸出選項(outputOptions)。輸出選項決定jstat命令顯示的內容和格式,具體如下:

-class
-compiler
-gc
-gccapacity
-gcutil
-gccause
-gcnew
-gcnewcapacity
-gcold
-gcoldcapacity
-gcmetacapacity
-printcompilation

jstat命令的顯示輸出被格式化為一個表,列用空格分隔。接下來,我來了解一下每條輸出選項的列名。

-class選項

  1. Loaded:載入的類的數量。
  2. Bytes:載入的類所佔用的位元組數。
  3. Unloaded:解除安裝的類的數量。
  4. Bytes:解除安裝的類所佔用的位元組數。
  5. Time:執行類載入和解除安裝操作所花費的時間。

舉個例子:

-compiler選項

  1. Compiled:執行的編譯任務的數量。
  2. Failed:執行編譯任務失敗的數量。
  3. Invalid:執行編譯任務失效的數量。
  4. Time:執行編譯任務所花費的時間。
  5. FailedType:上次編譯失敗的編譯型別。
  6. FailedMethod:上次編譯失敗的類名和方法。

舉個例子:

-gc選項

  1. S0C:年輕代中第一個Survivor區的容量,單位為KB。
  2. S1C:年輕代中第二個Survivor區的容量,單位為KB。
  3. S0U:年輕代中第一個Survivor區已使用大小,單位為KB。
  4. S1U:年輕代中第二個Survivor區已使用大小,單位為KB。
  5. EC:年輕代中Eden區的容量,單位為KB。
  6. EU:年輕代中Eden區已使用大小,單位為KB。
  7. OC:老年代的容量,單位為KB。
  8. OU:老年代已使用大小,單位為KB。
  9. MC:元空間的容量,單位為KB。
  10. MU:元空間已使用大小,單位為KB。
  11. CCSC:壓縮類的容量,單位為KB。
  12. CCSU:壓縮類已使用大小,單位為KB。
  13. YGC:Young GC的次數。
  14. YGCT:Young GC所用的時間。
  15. FGC:Full GC的次數。
  16. FGCT:Full GC的所用的時間。
  17. GCT:GC的所用的總時間。

舉個例子:

-gccapacity選項

  1. NGCMN:年輕代最小的容量,單位為KB。
  2. NGCMX:年輕代最大的容量,單位為KB。
  3. NGC:當前年輕代的容量,單位為KB。
  4. S0C:年輕代中第一個Survivor區的容量,單位為KB。
  5. S1C:年輕代中第二個Survivor區的容量,單位為KB。
  6. EC:年輕代中Eden區的容量,單位為KB。
  7. OGCMN:老年代最小的容量,單位為KB。
  8. OGCMX:老年代最大的容量,單位為KB。
  9. OGC:當前老年代的容量,單位為KB。
  10. OC:當前老年代的容量,單位為KB。
  11. MCMN:元空間最小的容量,單位為KB。
  12. MCMX:元空間最大的容量,單位為KB。
  13. MC:當前元空間的容量,單位為KB。
  14. CCSMN:壓縮類最小的容量,單位為KB。
  15. CCSMX:壓縮類最大的容量,單位為KB。
  16. CCSC:當前壓縮類的容量,單位為KB。
  17. YGC:Young GC的次數。
  18. FGC:Full GC的次數。

舉個例子:

-gcutil選項

  1. S0:年輕代中第一個Survivor區使用大小佔當前容量的百分比。
  2. S1:年輕代中第二個Survivor區使用大小佔當前容量的百分比。
  3. E:Eden區使用大小佔當前容量的百分比。
  4. O:老年代使用大小佔當前容量的百分比。
  5. M:元空間使用大小佔當前容量的百分比。
  6. CCS:壓縮類使用大小佔當前容量的百分比。
  7. YGC:Young GC的次數。
  8. YGCT:Young GC所用的時間。
  9. FGC:Full GC的次數。
  10. FGCT:Full GC的所用的時間。
  11. GCT:GC的所用的總時間。

舉個例子:

-gccause選項

  1. S0:年輕代中第一個Survivor區使用大小佔當前容量的百分比。
  2. S1:年輕代中第二個Survivor區使用大小佔當前容量的百分比。
  3. E:Eden區使用大小佔當前容量的百分比。
  4. O:老年代使用大小佔當前容量的百分比。
  5. M:元空間使用大小佔當前容量的百分比。
  6. CCS:壓縮類使用大小佔當前容量的百分比。
  7. YGC:Young GC的次數。
  8. YGCT:Young GC所用的時間。
  9. FGC:Full GC的次數。
  10. FGCT:Full GC的所用的時間。
  11. GCT:GC的所用的總時間。
  12. LGCC:上次垃圾回收的原因。
  13. GCC:當前垃圾回收的原因。

舉個例子:

-gcnew選項

  1. S0C:年輕代中第一個Survivor區的容量,單位為KB。
  2. S1C:年輕代中第二個Survivor區的容量,單位為KB。
  3. S0U:年輕代中第一個Survivor區已使用大小,單位為KB。
  4. S1U:年輕代中第二個Survivor區已使用大小,單位為KB。
  5. TT:物件在年輕代存活的次數。
  6. MTT:物件在年輕代存活的最大次數
  7. DSS:期望的Survivor區大小,單位為KB。
  8. EC:年輕代中Eden區的容量,單位為KB。
  9. EU:年輕代中Eden區已使用大小,單位為KB。
  10. YGC:Young GC的次數。
  11. YGCT:Young GC所用的時間。

舉個例子:

-gcnewcapacity選項

  1. NGCMN:年輕代最小的容量,單位為KB。
  2. NGCMX:年輕代最大的容量,單位為KB。
  3. NGC:當前年輕代的容量,單位為KB。
  4. S0CMX:年輕代中第一個Survivor區最大的容量,單位為KB。
  5. S0C:年輕代中第一個Survivor區的容量,單位為KB。
  6. S1CMX:年輕代中第二個Survivor區最大的容量,單位為KB。
  7. S1C:年輕代中第二個Survivor區的容量,單位為KB。
  8. ECMX:年輕代中Eden區最大的容量,單位為KB。
  9. EC:年輕代中Eden區的容量,單位為KB。
  10. YGC:Young GC的次數。
  11. FGC:Full GC的次數。

舉個例子:

-gcold選項

  1. MC:元空間的容量,單位為KB。
  2. MU:元空間已使用大小,單位為KB。
  3. CCSC:壓縮類的容量,單位為KB。
  4. CCSU:壓縮類已使用大小,單位為KB。
  5. OC:老年代的容量,單位為KB。
  6. OU:老年代已使用大小,單位為KB。
  7. YGC:Young GC的次數。
  8. FGC:Full GC的次數。
  9. FGCT:Full GC的所用的時間。
  10. GCT:GC的所用的總時間。

舉個例子:

-gcoldcapacity選項

  1. OGCMN:老年代最小的容量,單位為KB。
  2. OGCMX:老年代最大的容量,單位為KB。
  3. OGC:當前老年代的容量,單位為KB。
  4. OC:當前老年代的容量,單位為KB。
  5. YGC:Young GC的次數。
  6. FGC:Full GC的次數。
  7. FGCT:Full GC的所用的時間。
  8. GCT:GC的所用的總時間。

舉個例子: