Java的jstat命令使用詳解

萬貓學社發表於2022-03-15

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:顯示關於垃圾收集統計資訊的摘要(與-gcutil相同),以及最近和當前垃圾回收的原因。
  • -gcnew:顯示新生代的垃圾回收統計資訊。
  • -gcnewcapacity:顯示新生代的大小及其對應的空間的統計資訊。
  • -gcold: 顯示老年代和元空間的垃圾回收統計資訊。
  • -gcoldcapacity:顯示老年代的大小統計資訊。
  • -gcmetacapacity:顯示元空間的大小的統計資訊。
  • -printcompilation:顯示即時編譯方法的統計資訊。

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

-class選項

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

舉個例子:

萬貓學社.png

-compiler選項

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

舉個例子:

萬貓學社.png

-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的所用的總時間。

舉個例子:

萬貓學社.png

-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的次數。

舉個例子:

萬貓學社.png

-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的所用的總時間。

舉個例子:

萬貓學社.png

-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:當前垃圾回收的原因。

舉個例子:

萬貓學社.png

-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所用的時間。

舉個例子:

萬貓學社.png

-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的次數。

舉個例子:

萬貓學社.png

-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的所用的總時間。

舉個例子:

萬貓學社.png

-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的所用的總時間。

舉個例子:

萬貓學社.png

-gcmetacapacity選項

  1. MCMN:元空間最小的容量,單位為KB。
  2. MCMX:元空間最大的容量,單位為KB。
  3. MC:當前元空間的容量,單位為KB。
  4. CCSMN:壓縮類最小的容量,單位為KB。
  5. CCSMX:壓縮類最大的容量,單位為KB。
  6. YGC:Young GC的次數。
  7. FGC:Full GC的次數。
  8. FGCT:Full GC的所用的時間。
  9. GCT:GC的所用的總時間。

舉個例子:

萬貓學社.png

-printcompilation選項

Compiled:最近編譯方法執行的編譯任務的數量。
Size:最近編譯方法的位元組碼的位元組數。
Type:最近編譯方法的編譯型別。
Method:最近編譯方法的類名和方法名。

舉個例子:

萬貓學社.png

最後,謝謝你這麼帥,還給我點贊關注

微信公眾號:萬貓學社

微信掃描二維碼

關注後回覆「電子書」

獲取12本Java必讀技術書籍

Java的jstat命令使用詳解

相關文章