查看gc情况
jstat -gc 19 1000 3
命令解释
19 是pid
1000 是 1000毫秒
3 表示3次
也就是 统计pid是19的java进程的gc信息,1秒钟打印一次,一共打印3次
如果不写次数3就会一直打印,需要手动退出
看下结果
bash-5.1# jstat -gc 19 1000 3
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
73728.0 72704.0 0.0 41029.3 2642944.0 973020.0 4226048.0 2463683.2 212352.0 198836.4 24704.0 22580.7 647 20.864 6 14.995 35.859
73728.0 72704.0 0.0 41029.3 2642944.0 973085.0 4226048.0 2463683.2 212352.0 198836.4 24704.0 22580.7 647 20.864 6 14.995 35.859
73728.0 72704.0 0.0 41029.3 2642944.0 973088.3 4226048.0 2463683.2 212352.0 198836.4 24704.0 22580.7 647 20.864 6 14.995 35.859
结果解释 ,下面涉内存大小的单位是KB,时间单位是秒
S0C:第一个幸存区的大小
S1C:第二个幸存区的大小
S0U:第一个幸存区的使用大小
S1U:第二个幸存区的使用大小
EC:伊甸园区的大小
EU:伊甸园区的使用大小
OC:老年代大小
OU:老年代使用大小
MC:metaspace区大小
MU:metaspace区使用大小
CCSC:压缩类空间大小
CCSU:压缩类空间使用大小
YGC:年轻代垃圾回收次数
YGCT:年轻代垃圾回收消耗时间
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间
查看java进程运行时间
bash-5.1# ps -eo pid,tty,user,comm,etime | grep 19
19 ? root java 1d21
1d21表示一天21小时也就是45小时,说明程序已经持续运行了45小时
频率 = 持续时间 /FGC
也就是
45/6 = 7.5
也就是每7.5小时程序会fullgc一次,显然来说太频繁了,需要优化