jstat|jstat 查看GC

Jstat 是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。可见,Jstat是轻量级的、专门针对JVM的工具,非常适用
jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。命令的格式如下:
jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数]
参数解释:
Options — 选项,我们一般使用 -gcutil 查看gc情况
vmid — VM的进程号,即当前运行的java进程号
【jstat|jstat 查看GC】interval[s|ms] —— 间隔时间,单位为秒或者毫秒,默认为ms。必须是正整型。
count — 打印次数,如果缺省则打印无数次

具体参数:-class: 统计class loader 行为信息-compiler: 统计编译行为信息-gc:统计jdk gc时heap信息-gccapacity:统计不同的generations(新生代、老生代、永久代)相应的heap容量信息-gccause:统计gc的情况,以及引起gc的事情。同-gcutil-gcnew:统计新生代的gc情况-gcnewcapacity:统计新生代gc时heap的容量信息-gcold:统计老生代的gc情况-gcoldcapacity:统计老生代gc时heap容量信息-gcpermcapacity:统计永久代gc时的容量信息-gcutil:统计heap的gc情况

jstat -gcutil 16057 100010 S0S1EOMCCSYGCYGCTFGCFGCTGCT 0.00 100.0025.8186.4298.4597.86115717.725399910.176927.901 0.00 100.0025.8186.4298.4597.86115717.725399910.176927.901 0.00 100.0025.8186.4298.4597.86115717.725399910.176927.901 0.00 100.0025.8186.4298.4597.86115717.725399910.176927.901 0.00 100.0025.8186.4298.4597.86115717.725399910.176927.901 0.00 100.0025.8186.4298.4597.86115717.725399910.176927.901 0.00 100.0025.8186.4298.4597.86115717.725399910.176927.901 0.00 100.0025.8186.4298.4597.86115717.725399910.176927.901 0.00 100.0025.8186.4298.4597.86115717.725399910.176927.901 0.00 100.0025.8186.4298.4597.86115717.725399910.176927.901

S0:幸存1区当前使用比例 S1:幸存2区当前使用比例 E:伊甸园区使用比例 O:老年代使用比例 M:元数据区使用比例 CCS:压缩使用比例 YGC:年轻代垃圾回收次数 FGC:老年代垃圾回收次数 FGCT:老年代垃圾回收消耗时间 GCT:垃圾回收消耗总时间

这里需要注意的是, 因为G1的堆布局跟HotSpot VM里其它GC不一样——它只有一组逻辑上的survivor space,而不像其它HotSpot GC一样有两段明确、固定的地址空间用作survivor space——所以用jstat看G1的话肯定是survivor space 0显示0%,survivor space 1显示100%。
类加载统计:
jstat -class 77953 LoadedBytesUnloadedBytesTime 16213000.700.00.76

Loaded:加载class的数量
Bytes:所占用空间大小
Unloaded:未加载数量
Bytes:未加载占用空间
Time:时间
jstat -compiler 77953 Compiled Failed InvalidTimeFailedType FailedMethod 464000.34

Compiled:编译数量。
Failed:失败数量
Invalid:不可用数量
Time:时间
FailedType:失败类型
FailedMethod:失败的方法
jstat -gc 77953 S0CS1CS0US1UECEUOCOUMCMUCCSCCCSUYGCYGCTFGCFGCTGCT 10752.0 10752.00.00.065536.028931.0175104.00.04480.0 789.6384.076.400.00000.0000.000

S0C:第一个幸存区的大小
S1C:第二个幸存区的大小
S0U:第一个幸存区的使用大小
S1U:第二个幸存区的使用大小
EC:伊甸园区的大小
EU:伊甸园区的使用大小
OC:老年代大小
OU:老年代使用大小
MC:方法区大小
MU:方法区使用大小
CCSC:压缩类空间大小
CCSU:压缩类空间使用大小
YGC:年轻代垃圾回收次数
YGCT:年轻代垃圾回收消耗时间
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间
堆内存统计
jstat -gccapacity 77953 NGCMNNGCMXNGCS0CS1CECOGCMNOGCMXOGCOCMCMNMCMXMCCCSMNCCSMXCCSCYGCFGC 87040.0 1397760.087040.0 10752.0 10752.065536.0175104.02796544.0175104.0175104.00.0 1056768.04480.00.0 1048576.0384.000

demo for i in seq 1 99999; do jstat -gcutil 89; done > /tmp/gc.log
等价于 jstat -gcutil 89 1000 99999

    推荐阅读