JVM自帶效能分析工具介紹——jstat
阿新 • • 發佈:2019-02-15
前言
JDK本身提供了很多方便的JVM效能調優監控工具,除了整合式的VisualVM和jConsole外,還有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,每一種工具都有其自身的特點,使用者可以根據你需要檢測的應用或者程式片段的狀況,適當的選擇相應的工具進行檢測,這裡我們就簡要介紹下這幾個命令的作用和使用方法。
命令 | 作用 |
---|---|
jps | 基礎工具 |
jstack | 檢視某個Java程序內的執行緒堆疊資訊 |
jmap | jmap匯出堆記憶體,然後使用jhat來進行分析 |
jhat | jmap匯出堆記憶體,然後使用jhat來進行分析 |
jstat | JVM統計監測工具 |
hprof | hprof能夠展現CPU使用率,統計堆記憶體使用情況 |
jstat
JVM統計監測工具,用來檢視各個區記憶體和GC的情況
基本語法
jstat <option> [-t] [-h] <pid> <interval> <count>
pid是Java虛擬機器ID,在Linux/Unix系統上一般就是程序ID。-t可以在列印的列加上Timestamp列,用於顯示系統執行的時間,-h可以在週期性資料資料的時候,可以在指定輸出多少行以後輸出一次表頭interval是取樣時間間隔。count是取樣數目。比如下面輸出的是GC資訊,取樣時間間隔為250ms,取樣數為6:
option引數:
引數 | 作用 |
---|---|
-gc | GC堆狀態 |
-gcutil | GC統計彙總 |
-class | 類載入器 |
-compiler | JIT |
-gccapacity | 各區大小 |
-gccause | 最近一次GC統計和原因 |
-gcnew | 新區統計 |
-gcnewcapacity | 新區大小 |
-gcold | 老區統計 |
-gcoldcapacity | 老區大小 |
-gcpermcapacity | 永久區大小 |
-printcompilation | HotSpot編譯統計 |
其中jstat -gcutil 是最常用的命令,例子:
[esv@bz3esvbs0ap1001 ~]$ jstat -gcutil 46924
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 90.62 12.08 77.62 98.34 95.95 3933 225.161 4 1.371 226.533
引數 | 作用 |
---|---|
S0 | 年輕代中第一個survivor(倖存區)已使用的佔當前容量百分比 |
S1 | 年輕代中第二個survivor(倖存區)已使用的佔當前容量百分比 |
E | 年輕代中Eden(伊甸園)已使用的佔當前容量百分比 |
O | old代已使用的佔當前容量百分比 |
P | perm代已使用的佔當前容量百分比 |
YGC | 從應用程式啟動到取樣時年輕代中gc次數 |
YGCT | 從應用程式啟動到取樣時年輕代中gc所用時間(s) |
FGCT | 從應用程式啟動到取樣時old代(全gc)gc次數 |
GCT | 從應用程式啟動到取樣時gc用的總時間(s) |
堆記憶體 = 年輕代 + 年老代 + 永久代
年輕代 = Eden區 + 兩個Survivor區(From和To)