4.4 jstat
jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。
jstat语法
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]] |
jstat支持的option通过jstat -optioins进行查看
[root@www wangxiaoxiao]# jstat -options -class 统计class loader行为信息 ,例如当前总共加载了多少个类 -compile 统计HotSpot Just-in-Time compiler的行为 -gc 统计jdk gc时heap信息 -gccapacity 统计不同的generations相应的heap容量情况 -gccause 统计gc的情况,(同-gcutil)和引起gc的事件 -gcnew 统计gc时,新生代的情况 -gcnewcapacity 统计gc时,新生代heap容量 -gcold 统计gc时,老年区的情况 -gcoldcapacity 统计gc时,老年区heap容量 -gcpermcapacity 统计gc时,permanent区heap容量 -gcutil 统计gc时,heap情况 -printcompilation hotspot编译方法统计 |
其中:
-gc综合了-gcnew、-gcold的输出;
-gccapacity综合了-gcnewcapacity、-gcoldcapacity、-gcpermcapacity的输出
统计JVM gc状况
参数说明:
S0C 当前survivor space 0 的总容量 (KB).
S1C 当前survivor space 1 的总容量 (KB).
S0U 当前survivor space 0 已使用的容量 (KB).
S1U 当前survivor space 1 已使用的容量 (KB).
EC 当前 eden space 总容量 (KB).
EU 当前eden space已经使用的容量 (KB).
OC 当前 old space 总容量 (KB).
OU 当前old space 已使用容量(KB).
PC 当前 permanent space 总容量(KB).
PU 当前 permanent space 已使用容量 (KB).
YGC 从应用启动时到现在,年轻代young generation 发生GC Events的总次数.
YGCT 从应用启动时到现在, 年轻代Young generation 垃圾回收的总耗时.
FGC 从应用启动时到现在, full GC事件总次数.
FGCT 从应用启动时到现在, Full sc总耗时.
GCT 从应用启动时到现在, 垃圾回收总时间. GCT=YGCT+FGCT
上图说明了,总应用启动到现在,YGC总共发生了136次,总耗时YGCT=6.891秒,FGC发生了20次,总耗时FGCT=1.384秒,FGC+YGC总耗时GCT=8.275秒。
可以发现五条记录YGC、YGCT、YGC、YGCT、GCT值都是相同的,说明在我们统计的这段时间(每1秒统计1次,共5次),所以这5秒内没有发生gc事件。
此外,这里显示的S0C、S1C、EC、OC、PC显示的值,与jmap中都有相对应的条目,为了进行说明,我们通过jmap
命令与这里的参数进行对比:
jmap -heap 15525 ... Heap Usage: New Generation (Eden + 1 Survivor Space): capacity = 120782848 (115.1875MB) used = 54471592 (51.948158264160156MB) free = 66311256 (63.239341735839844MB) 45.09878091299851% used Eden Space: capacity = 107413504 (102.4375MB) #对应EC used = 51631152 (49.23930358886719MB) #对应EU free = 55782352 (53.19819641113281MB) 48.06765451018151% used From Space: capacity = 13369344 (12.75MB) #对应S0C used = 2840440 (2.7088546752929688MB) #对应S0U free = 10528904 (10.041145324707031MB) 21.24591902190564% used To Space: capacity = 13369344 (12.75MB) #对应S1C used = 0 (0.0MB) #对应S1U free = 13369344 (12.75MB) 0.0% used concurrent mark-sweep generation: #老年代使用了cms收集器 capacity = 194482176 (185.47265625MB) #对应OC used = 123681224 (117.95160675048828MB) #对应OU free = 70800952 (67.52104949951172MB) 63.59514611765759% used |
注意在jstat中显示的值以kb为单位,乘以1024之后,就是通过jmap -heap命令显示对应的字节数。
参考: http://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jstat.html