本系列筆記主要基於《深入理解Java虛擬機:JVM高級特性與最佳實踐 第2版》,是這本書的讀書筆記。 jstat命令用來查看JVM統計信息,可以查看類載入信息、垃圾收集的信息、JIT編譯信息等等,功能非常豐富。 所有的JDK工具都可以在Oracle官網的 "Java Tools Reference" ...
本系列筆記主要基於《深入理解Java虛擬機:JVM高級特性與最佳實踐 第2版》,是這本書的讀書筆記。
jstat命令用來查看JVM統計信息,可以查看類載入信息、垃圾收集的信息、JIT編譯信息等等,功能非常豐富。
所有的JDK工具都可以在Oracle官網的 Java Tools Reference 文檔中找到使用說明,這是主要參考,包括命令格式、參數內容、輸出信息等等。
jstat命令格式:
jstat [ generalOption | outputOptions vmid [ interval[s|ms] [ count ] ]
jstat命令的幫助信息:
jstat統計類載入信息
jstat命令使用-class參數可以統計類載入信息,命令舉例:
jstat -class 21060 1000 10
-class
表示查看類載入統計信息,21060
是pid,1000
表示每1000毫秒列印一次,10
表示列印10次。
輸出如下:
輸出信息中,每一列的含義可以查閱 Java Tools Reference 文檔,從左到右依次,Loaded
表示載入的類的個數,Bytes
表示載入了多少KB,Unloaded
表示卸載的類的個數,Bytes
表示卸載了多少KB,Time
表示類載入和卸載花費的時間。
jstat統計垃圾收集信息
jstat命令中,常用的跟垃圾收集相關的統計參數有:-gc、-gccapacity、-gcutil、-gccause、-gcnew、-gcold。
jstat -gc
-gc參數用來查看Java堆的垃圾收集統計信息,舉例如下:
jstat -gc 21060 1000 3
其中,21060
是pid,1000
表示每1000毫秒列印一次,3
表示列印3次。
輸出如下:
同樣的,輸出信息中,每一列的含義可以查閱 Java Tools Reference 文檔,依次如下:
S0C: 第1個Survivor空間的容量 Current survivor space 0 capacity (kB).
S1C: 第2個Survivor空間的容量(kB).
S0U: 第1個Survivor空間中已經使用的容量 Survivor space 0 utilization (kB).
S1U: 第2個Survivor空間中已經使用的容量(kB).
EC: Eden空間的容量(kB).
EU: Eden空間中已經使用的容量(kB).
OC: 老年代Old空間的容量(kB).
OU: 老年代Old空間已經使用的容量(kB).
MC: 元空間Metaspace的容量(kB).
MU: 元空間Metaspace已經使用的容量(kB).
CCSC: 壓縮類空間的容量 Compressed class space capacity (kB).
CCSU: 壓縮類空間已經使用的容量(kB).
YGC: Young GC發生的次數.
YGCT: Young GC花費的時間.
FGC: Full GC發生的次數.
FGCT: Full GC花費的時間.
GCT: 所有的GC花費的總時間.
jstat -gccapacity
-gccapacity參數用來統計各個記憶體區域的容量使用的最大最小值,例如使用到的最大值、最小值、當前使用值等等,舉例如下:
jstat -gccapacity 21060
輸出如下:
輸出信息中,每一列的含義可以查閱 Java Tools Reference 文檔,就不再一一列舉了。基本都是統計的新生代老年代使用的最小值、最大值、當前值,Survivor和Eden空間的當前值,元空間和壓縮類空間的最小值、最大值、當前值。
jstat -gcutil
-gcutil參數統計的是各個記憶體區域使用率,已使用容量的百分比,舉例如下:
jstat -gcutil 21060
輸出如下:
輸出信息中,統計的都是Survivor、Eden、老年代、元空間、壓縮類空間等的使用百分比。
jstat統計JIT編譯信息
jstat命令中,跟JIT編譯相關的統計參數有:-compiler、-printcompilation。
-compiler參數統計的是JIT編譯信息,舉例如下:
jstat -compiler 21060
輸出如下:
輸出信息中,從左到右每列依次是,Compiled
表示完成了多少次JIT編譯,Failed
表示編譯失敗的次數,Invalid
表示無效的編譯次數,Time
表示JIT編譯總共花費的時間,FailedType
最後一次編譯失敗的編譯類型,FailedMethod
最後一次編譯失敗的類名和方法名。
jstat的其他參數
除了上面列舉的幾個,jstat還有很多其他參數,使用手冊參考 Java Tools Reference 文檔,jstat所有統計參數列舉如下:
class: Displays statistics about the behavior of the class loader.
compiler: Displays statistics about the behavior of the Java HotSpot VM Just-in-Time compiler.
gc: Displays statistics about the behavior of the garbage collected heap.
gccapacity: Displays statistics about the capacities of the generations and their corresponding spaces.
gccause: Displays a summary about garbage collection statistics (same as -gcutil), with the cause of the last and current (when applicable) garbage collection events.
gcnew: Displays statistics of the behavior of the new generation.
gcnewcapacity: Displays statistics about the sizes of the new generations and its corresponding spaces.
gcold: Displays statistics about the behavior of the old generation and metaspace statistics.
gcoldcapacity: Displays statistics about the sizes of the old generation.
gcmetacapacity: Displays statistics about the sizes of the metaspace.
gcutil: Displays a summary about garbage collection statistics.
printcompilation: Displays Java HotSpot VM compilation method statistics.