docker环境下查询JVM虚拟机GC信息
1、进入docker服务容器内部
docker ps
查看容器进程列表,找到对应CONTAINER ID
(服务ID)或NAMES
(服务名称)
如果服务太多可以使用 docker ps|grep ‘keyword’
过滤
例如:3700sdz0881
进入容器命令:
unbuntu: docker exec -it 3700sdz0881 /bash/sh
centos: docker exec -it 3700sdz0881 /bin/sh
2、查询JVM-GC情况
1、执行top命令或jps查询java进程pid:如进程id为1
2、执行jstat -gc ${pid}
查看gc情况
jstat -gc 1
结果图如下:
注意后面参数的对应关系会错位。
S0C:当前survival0容量(kB)。
S1C:当前survival1容量(kB)。
S0U:survival0已使用容量(kB)。
S1U:survival1已使用容量(kB)。
EC:新生代eden区空间容量(kB)。
EU:新生代eden区已使用容量(kB)。
OC:old区空间容量(kB)。
OU:old区已使用容量(kB)。
MC:元空间容量(kB)。
MU:元空间已使用容量(kB)。
CCSC:压缩类空间容量(kB)。
CCSU:压缩类空间已使用容量(kB)。
YGC:程序启动至今年轻代垃圾收集次数,也就是minor GC次数。
YGCT:年轻代垃圾收集时间(秒)。
FGC:程序启动至今FULL GC次数,也就是老年代中GC次数。
FGCT:FULL GC收集时间(秒)。
GCT:垃圾收集总时间(秒)。
3、间隔时间查看gc情况
jstat -gc 1 5000 5 //5000:5秒一次 5:统计5次
结果如下图:
附:
jstat命令官方说明文档:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html#BEHHGFAE