1. 程式人生 > >JVM自帶效能分析工具介紹——jstat

JVM自帶效能分析工具介紹——jstat

前言

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區(FromTo