命令格式
jstat [Options] pid [interval] [count]
参数说明:
Options,选项,一般使用 -gc、-gccapacity查看gc情况
pid,VM的进程号,即当前运行的java进程号
interval,间隔时间(按该时间频率自动刷新当前内存情况),单位毫秒
count,打印次数,如果缺省则打印无数次
示例
查看当前jvm内存情况
jstat -gc 12675
说明
1.内容单位=KB
2.既能看到JVM内存各区域分配空间 (如S0C、S1C、EC、OC)
3.也能看到JVM内存各区域内存已使用空间 (如S0U、S1U、EU、OU)
4.能看到应用启动期间GC次数及时间 YGC、FGC
结果的参数说明
显示内容说明如下(部分结果是通过其他其他参数显示的,暂不说明):
S0C:年轻代中第一个survivor(幸存区)的容量 (KB)
S1C:年轻代中第二个survivor(幸存区)的容量 (KB)
S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (KB)
S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (KB)
EC:年轻代中Eden(伊甸园)的容量 (KB)
EU:年轻代中Eden(伊甸园)目前已使用空间 (KB)
OC:Old代的容量 (KB)
OU:Old代目前已使用空间 (KB)
MC:元数据区的容量 (KB)
MU:元数据区目前已使用空间 (KB)
YGC:从应用程序启动到采样时年轻代中gc次数
YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
FGC:从应用程序启动到采样时old代(全gc)gc次数
FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT:从应用程序启动到采样时gc用的总时间(s)
NGCMN:年轻代(young)中初始化(最小)的大小 (字节)
NGCMX:年轻代(young)的最大容量 (字节)
NGC:年轻代(young)中当前的容量 (字节)
OGCMN:old代中初始化(最小)的大小 (字节)
OGCMX:old代的最大容量 (字节)
OGC:old代当前新生成的容量 (字节)
S0:年轻代中第一个survivor(幸存区)已使用的占当前容量百分比
S1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比
E:年轻代中Eden(伊甸园)已使用的占当前容量百分比
O:old代已使用的占当前容量百分比
S0CMX:年轻代中第一个survivor(幸存区)的最大容量 (字节)
S1CMX :年轻代中第二个survivor(幸存区)的最大容量 (字节)
ECMX:年轻代中Eden(伊甸园)的最大容量 (字节)
DSS:当前需要survivor(幸存区)的容量 (字节)(Eden区已满)
TT: 持有次数限制
MTT : 最大持有次数限制
实时查看内存使用情况及GC时内存变化(每5s刷新一次)
stat -gc 12675 5000
图片说明
通过观察图片中的标识部分,可以看到代表在发生YGC,其实这个频率是非常高了,导致这个问题的原因是JVM分配的内存才300多M,比较小,所以YGC的频率已经高达2分钟内就发生一次