jstat命令總結

1、 jstat是什麼

jstat是JDK自帶的一個輕量級小工具。全稱「Java Virtual Machine statistics monitoring tool」,它位於java的bin目錄下,主要利用JVM內建的指令對Java應用程序的資源和性能進行實時的命令行的監控,包括了對Heap size和垃圾回收情況的監控。css

jstat 是用於見識虛擬機各類運行狀態信息的命令行工具。它能夠顯示本地或者遠程虛擬機進程中的類裝載、內存、垃圾收集、jit編譯等運行數據,它是線上定位jvm性能的首選工具。java

2、 jstat命令格式

jstat [ generalOption | outputOptions vmid [interval[s|ms] [count]] ]python

  • generalOption : 單個的經常使用的命令行選項,如-help, -options, 或 -version。
  • outputOptions : 一個或多個輸出選項,由單個的statOption選項組成,能夠和-t, -h, and -J等選項配合使用。
Usage: jstat -help|-options jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]] Definitions: <option> An option reported by the -options option(可選的參數) <vmid> Virtual Machine Identifier. A vmid takes the following form: <lvmid>[@<hostname>[:<port>]](虛擬機的標識符) Where <lvmid> is the local vm identifier for the target Java virtual machine, typically a process id; <hostname> is the name of the host running the target Java virtual machine; and <port> is the port number for the rmiregistry on the target host. See the jvmstat documentation for a more complete description of the Virtual Machine Identifier. <lines> Number of samples between header lines. <interval> Sampling interval. The following forms are allowed: <n>["ms"|"s"](採樣間隔:毫毛|秒) Where <n> is an integer and the suffix specifies the units as milliseconds("ms") or seconds("s"). The default units are "ms". <count> Number of samples to take before terminating.(在終止前要取的樣本數) -J<flag> Pass <flag> directly to the runtime system. # option: 參數選項 # -t: 能夠在打印的列加上Timestamp列,用於顯示系統運行的時間 # -h: 能夠在週期性數據數據的時候,能夠在指定輸出多少行之後輸出一次表頭 # vmid: Virtual Machine ID( 進程的 pid) # interval: 執行每次的間隔時間,單位爲毫秒 # count: 用於指定輸出多少次記錄,缺省則會一直打印 

3、jstat參數選項

> jstat -options -class 顯示ClassLoad的相關信息; -compiler 顯示JIT編譯的相關信息; -gc 顯示和gc相關的堆信息; -gccapacity    顯示各個代的容量以及使用狀況; -gcmetacapacity 顯示metaspace的大小 -gcnew 顯示新生代信息; -gcnewcapacity 顯示新生代大小和使用狀況; -gcold 顯示老年代和永久代的信息; -gcoldcapacity 顯示老年代的大小; -gcutil   顯示垃圾收集信息; -gccause 顯示垃圾回收的相關信息(通-gcutil),同時顯示最後一次或當前正在發生的垃圾回收的誘因; -printcompilation 輸出JIT編譯的方法信息 

參數名稱 | 參數說明
---|---|---
class | 用於查看類加載狀況的統計,顯示加載class的數量,及所佔空間等信息。
compiler | 查看HotSpot中即時編譯器編譯狀況的統計
gc | 查看JVM中堆的垃圾收集狀況的統計,能夠顯示gc的信息,查看gc的次數,及時間。其中最後五項,分別是young gc的次數,young gc的時間,full gc的次數,full gc的時間,gc的總時間。
gccapacity | 查看新生代、老生代及持久代的存儲容量狀況,能夠顯示,VM內存中三代(young,old,perm)對象的使用和佔用大小
gccause | 查看垃圾收集的統計狀況(這個和-gcutil選項同樣),若是有發生垃圾收集,它還會顯示最後一次及當前正在發生垃圾收集的緣由
gcmetacapacity | 顯示關於metaspace大小的統計信息。
gcnew | 查看新生代垃圾收集的狀況,new對象的信息
gcnewcapacity | 用於查看新生代的存儲容量狀況,new對象的信息及其佔用量
gcold | 用於查看老生代及持久代發生GC的狀況,old對象的信息
gcoldcapacity | 用於查看老生代的容量,old對象的信息及其佔用量
gcpermcapacity | 用於查看持久代的容量,perm對象的信息及其佔用量
gcutil | 查看新生代、老生代及持代垃圾收集的狀況
printcompilation | 當前VM執行的信息apache

4、 參數使用實例

# 在屏幕打印出一次結果
> jstat -gccause pid

# 不斷的在屏幕打印出結果
> jstat -gccause pid 1 每格1毫秒輸出結果
> jstat -gccause pid 2000 每格2秒輸出結果

類加載統計 class

PS C:\> PS C:\> jstat -class 6368 Loaded Bytes Unloaded Bytes Time 1846 3621.2 0 0.0 0.98 PS C:\> 
  • Loaded:加載class的數量
  • Bytes:所佔用空間大小
  • Unloaded:未加載數量
  • Bytes:未加載佔用空間
  • Time:時間

編譯統計 compiler

PS C:\> jstat -compiler 6368 Compiled Failed Invalid Time FailedType FailedMethod 791 0 0 1.17 0 PS C:\> 
  • Compiled:編譯數量
  • Failed:失敗數量
  • Invalid:不可用數量
  • Time:時間
  • FailedType:失敗類型
  • FailedMethod:失敗的方法

編譯統計 compiler

垃圾回收統計 gc

PS C:\> jstat -gc 6368 S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT 5120.0 5120.0 0.0 0.0 32768.0 29858.7 86016.0 0.0 4480.0 770.3 384.0 75.9 0 0.000 0 0.000 0.000 PS C:\> 
  • S0C:第一個倖存區的大小
  • S1C:第二個倖存區的大小
  • S0U:第一個倖存區的使用大小
  • S1U:第二個倖存區的使用大小
  • EC:伊甸園區的大小
  • EU:伊甸園區的使用大小
  • OC:老年代大小
  • OU:老年代使用大小
  • MC:方法區大小
  • MU:方法區使用大小
  • CCSC:壓縮類空間大小
  • CCSU:壓縮類空間使用大小
  • YGC:年輕代垃圾回收次數
  • YGCT:年輕代垃圾回收消耗時間
  • FGC:老年代垃圾回收次數
  • FGCT:老年代垃圾回收消耗時間
  • GCT:垃圾回收消耗總時間

堆內存統計 gccapacity

PS C:\> jstat -gccapacity 6368 NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC 43008.0 687104.0 43008.0 5120.0 5120.0 32768.0 86016.0 1375232.0 86016.0 86016.0 0.0 1056768.0 4480.0 0.0 1048576.0 384.0 0 0 PS C:\> 
  • NGCMN:新生代最小容量
  • NGCMX:新生代最大容量
  • NGC:當前新生代容量
  • S0C:第一個倖存區大小
  • S1C:第二個倖存區的大小
  • EC:伊甸園區的大小
  • OGCMN:老年代最小容量
  • OGCMX:老年代最大容量
  • OGC:當前老年代大小
  • OC:當前老年代大小
  • MCMN:最小元數據容量
  • MCMX:最大元數據容量
  • MC:當前元數據空間大小
  • CCSMN:最小壓縮類空間大小
  • CCSMX:最大壓縮類空間大小
  • CCSC:當前壓縮類空間大小
  • YGC:年輕代gc次數
  • FGC:老年代GC次數

新生代垃圾回收統計 gcnew

PS C:\> jstat -gcnew 6368 S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT 5120.0 5120.0 0.0 0.0 15 15 0.0 32768.0 29858.7 0 0.000 PS C:\> 
  • S0C:第一個倖存區大小
  • S1C:第二個倖存區的大小
  • S0U:第一個倖存區的使用大小
  • S1U:第二個倖存區的使用大小
  • TT:對象在新生代存活的次數
  • MTT:對象在新生代存活的最大次數
  • DSS:指望的倖存區大小
  • EC:伊甸園區的大小
  • EU:伊甸園區的使用大小
  • YGC:年輕代垃圾回收次數
  • YGCT:年輕代垃圾回收消耗時間

新生代內存統計 gcnewcapacity

PS C:\> jstat -gcnewcapacity 6368 NGCMN NGCMX NGC S0CMX S0C S1CMX S1C ECMX EC YGC FGC 43008.0 687104.0 43008.0 228864.0 5120.0 228864.0 5120.0 686080.0 32768.0 0 0 PS C:\> 
  • NGCMN:新生代最小容量
  • NGCMX:新生代最大容量
  • NGC:當前新生代容量
  • S0CMX:最大幸存1區大小
  • S0C:當前倖存1區大小
  • S1CMX:最大幸存2區大小
  • S1C:當前倖存2區大小
  • ECMX:最大伊甸園區大小
  • EC:當前伊甸園區大小
  • YGC:年輕代垃圾回收次數
  • FGC:老年代回收次數

老年代垃圾回收統計 gcold

PS C:\> jstat -gcold 6368 MC MU CCSC CCSU OC OU YGC FGC FGCT GCT 4480.0 770.3 384.0 75.9 86016.0 0.0 0 0 0.000 0.000 PS C:\> 
  • MC:方法區大小
  • MU:方法區使用大小
  • CCSC:壓縮類空間大小
  • CCSU:壓縮類空間使用大小
  • OC:老年代大小
  • OU:老年代使用大小
  • YGC:年輕代垃圾回收次數
  • FGC:老年代垃圾回收次數
  • FGCT:老年代垃圾回收消耗時間
  • GCT:垃圾回收消耗總時間

老年代內存統計

PS C:\> jstat -gcoldcapacity 6368 OGCMN OGCMX OGC OC YGC FGC FGCT GCT 86016.0 1375232.0 86016.0 86016.0 0 0 0.000 0.000 PS C:\> 
  • OGCMN:老年代最小容量
  • OGCMX:老年代最大容量
  • OGC:當前老年代大小
  • OC:老年代大小
  • YGC:年輕代垃圾回收次數
  • FGC:老年代垃圾回收次數
  • FGCT:老年代垃圾回收消耗時間
  • GCT:垃圾回收消耗總時間

元數據空間統計 gcmetacapacity

PS C:\> jstat -gcmetacapacity 6368 MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC FGCT GCT 0.0 1056768.0 4480.0 0.0 1048576.0 384.0 0 0 0.000 0.000 PS C:\> 
  • MCMN: 最小元數據容量
  • MCMX:最大元數據容量
  • MC:當前元數據空間大小
  • CCSMN:最小壓縮類空間大小
  • CCSMX:最大壓縮類空間大小
  • CCSC:當前壓縮類空間大小
  • YGC:年輕代垃圾回收次數
  • FGC:老年代垃圾回收次數
  • FGCT:老年代垃圾回收消耗時間
  • GCT:垃圾回收消耗總時間

總結垃圾回收統計 gcutil

PS C:\> jstat -gcutil 6368 S0 S1 E O M CCS YGC YGCT FGC FGCT GCT 0.00 0.00 91.12 0.00 17.19 19.76 0 0.000 0 0.000 0.000 PS C:\> 
  • S0:倖存1區當前使用比例
  • S1:倖存2區當前使用比例
  • E:伊甸園區使用比例
  • O:老年代使用比例
  • M:元數據區使用比例
  • CCS:壓縮使用比例
  • YGC:年輕代垃圾回收次數
  • FGC:老年代垃圾回收次數
  • FGCT:老年代垃圾回收消耗時間
  • GCT:垃圾回收消耗總時間

JVM編譯方法統計

PS C:\> jstat -printcompilation 6368 Compiled Size Type Method 791 5510 1 com/sun/org/apache/xerces/internal/impl/XMLDocumentFragmentScannerImpl$FragmentContentDriver next PS C:\> 
  • Compiled:最近編譯方法的數量
  • Size:最近編譯方法的字節碼數量
  • Type:最近編譯方法的編譯類型。
  • Method:方法名標識。


做者:阿飛雲
連接: https://www.jianshu.com/p/845924a1b8f2 來源:簡書 著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。
相關文章
相關標籤/搜索