JAVA-JVM-GC状态监控

157 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第3天,点击查看活动详情

在平时对JAVA程序进行调优时,需要监控程序的运行状态,除了程序的正确性,错误率等。还有包括JVM的运行状态等,比如GC的次数FGC的次数和时间等。

jstat命令参数

通过jstat -help看到支持以下参数

其中option参数支持参数如下,通过jstat -options命令查看

参数说明
option支持上面图片类型
vmid进程的ID
interval间隔多少时间刷新一次统计,单位为毫秒
count打印次数

option参数说明

参数说明
class类加载的行为统计
compilerHotSpot JIT编译器行为统计
gc垃圾回收堆的行为统计
gccapacity各个垃圾回收代容量(young、old、perm)和他们相应的空间统计
gcutil垃圾回收统计概述,比如伊甸园区使用百分之多少空间
gccause垃圾收集器概述
gcnew新生代行为统计
gcnewcapacity新生代与其相应的内存空间的统计
gcold老年代和永久代行为统计
gcoldcapacity老年代行为统计
gcmetacapacity元数据区行为统计
printcompilationHotSpot编译方法统计

命令说明

jstat [option] vmid [interval][count]

例如:

jstat -class 1234 1000 5

会显示类加载的情况,每间隔1s(即1000ms)刷新数据,刷新5次数据后停止。

如上面显示5次类加载情况,间隔1s刷新一次,5次刷新后停止。

jstat -class

命令,1234为进程的ID

jstat -class 1234

结果字段说明
Loaded加载的类数量
Bytes加载类的字节数
Unloaded未加载的类数量
Bytes未加载的类的字节数
Time加载需要的时间

jstat -compiler

JIT编译器行为统计,编译方法的数量,失败数量,时长等。

jstat -compiler 1234

结果字段说明
Compiled编译数量
Failed编译失败数量
Invalid无效数量
Time编译时间
FailedType失败类型
FailedMethod编译失败的方法名称

jstat -gc

垃圾回收堆的行为统计

jstat -gc 1234

编辑切换为居中

添加图片注释,不超过 140 字(可选)

结果字段说明
S0C年轻代第一个Survivor区的大小
S1C年轻代第二个Survivor区的大小
S0U年轻代第一个Survivor区的使用的大小
S1U年轻代第二个Survivor区的使用的大小
EC年轻代中Eden区的大小
EU年轻代中Eden区的使用的大小
OC年老代大小
OU年老代使用的大小
MC方法区大小
MU方法区使用的大小
CCSC压缩类空间大小
CCSU压缩类空间使用大小
YGC年轻代垃圾回收次数
YGCT年轻代垃圾回收消耗时间
FGC老年代垃圾回收次数
FGCT老年代垃圾回收消耗时间
GCTGC消耗总时间

jstat -gccapacity

jstat -gccapacity 1234

编辑切换为居中

添加图片注释,不超过 140 字(可选)

结果字段说明
NGCMN新生代最小容量
NGCMX新生代最大容量
NGC当前新生代容量
S0C第一个Survivor区大小
S1C第二个Survivor区的大小
ECEden区的大小
OGCMN老年代最小容量
OGCMX老年代最大容量
OGC当前老年代大小
OC当前老年代大小
MCMN最小元数据容量
MCMX最大元数据容量
MC当前元数据空间大小
CCSMN最小压缩类空间大小
CCSMX最大压缩类空间大小
CCSC当前压缩类空间大小
YGC年轻代gc次数
FGC老年代GC次数即Full GC

jstat -gcutil

jstat -gcutil 1234

结果字段说明
S0第一个Servivor区当前使用比例
S1第二个Servivor区当前使用比例
EEden区使用比例
O老年代使用比例
M元数据区使用比例
CCS压缩使用比例
YGC年轻代垃圾回收次数
YGCT年轻代垃圾回收消耗时间
FGC老年代垃圾回收次数
FGCT老年代垃圾回收消耗时间
GCT垃圾回收消耗总时间