jstat -gcutil $pid 29365 1000
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 2.07 72.02 26.86 97.25 96.29 27 0.436 3 0.558 0.994
0.00 2.07 72.02 26.86 97.25 96.29 27 0.436 3 0.558 0.994
0.00 2.07 72.02 26.86 97.25 96.29 27 0.436 3 0.558 0.994
0.00 2.07 72.02 26.86 97.25 96.29 27 0.436 3 0.558 0.994
0.00 2.07 72.02 26.86 97.25 96.29 27 0.436 3 0.558 0.994
0.00 2.07 72.06 26.86 97.25 96.29 27 0.436 3 0.558 0.994
0.00 2.07 72.06 26.86 97.25 96.29 27 0.436 3 0.558 0.994
0.00 2.07 72.06 26.86 97.25 96.29 27 0.436 3 0.558 0.994
0.00 2.07 72.06 26.86 97.25 96.29 27 0.436 3 0.558 0.994
0.00 2.07 72.06 26.86 97.25 96.29 27 0.436 3 0.558 0.994
0.00 2.07 72.06 26.86 97.25 96.29 27 0.436 3 0.558 0.994
E 其实是 Eden 的缩写,
S0 对应的是 Surivor0,
S1 对应的是 Surivor1,
O 代表的是 Old,
而 M 代表的是 Metaspace。
YGC 代表的是年轻代的回收次数,
YGC T对应的是年轻代的回收耗时。
那么 FGC 肯定代表的是 Full GC 的次数。
在看日志的时候,一定要注意其中的规律。-gcutil 位置的参数可以有很多种。最常用的有 gc、gcutil、gccause、gcnew 等。
gc: 显示和 GC 相关的 堆信息;
gcutil: 显示 垃圾回收信息;
gccause: 显示垃圾回收 的相关信息(同 -gcutil),同时显示 最后一次 或 当前 正在发生的垃圾回收的 诱因;
gcnew: 显示 新生代 信息;
gccapacity: 显示 各个代 的 容量 以及 使用情况;
gcmetacapacity: 显示 元空间 metaspace 的大小;
gcnewcapacity: 显示 新生代大小 和 使用情况;
gcold: 显示 老年代 和 永久代 的信息;
gcoldcapacity: 显示 老年代 的大小;
printcompilation: 输出 JIT 编译 的方法信息;
class: 显示 类加载 ClassLoader 的相关信息;
compiler: 显示 JIT 编译 的相关信息;
启动命令行中加上参数 -t,可以输出从程序启动到现在的时间
jstat -gcutil -t $pid 29365 1000
Timestamp S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
70848.2 0.00 2.07 76.23 26.86 97.25 96.29 27 0.436 3 0.558 0.994
70849.4 0.00 2.07 76.23 26.86 97.25 96.29 27 0.436 3 0.558 0.994
70850.4 0.00 2.07 76.23 26.86 97.25 96.29 27 0.436 3 0.558 0.994
70851.4 0.00 2.07 76.23 26.86 97.25 96.29 27 0.436 3 0.558 0.994
70852.4 0.00 2.07 76.23 26.86 97.25 96.29 27 0.436 3 0.558 0.994