jps 查看当前java进程
[ ~]# jps
9939 Resin
9874 WatchdogManager
18293 Jps
jstat -gc -t pid 1s
[ ~]# jstat -gc -t 9939 1s
Timestamp S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT
1964991.6 65536.0 65536.0 539.2 0.0 131072.0 15889.4 262144.0 163600.6 125280.0 75271.8 30576 231.889 33 1.581 233.469
1964992.6 65536.0 65536.0 539.2 0.0 131072.0 17543.4 262144.0 163600.6 125280.0 75271.8 30576 231.889 33 1.581 233.469
1964993.6 65536.0 65536.0 539.2 0.0 131072.0 17551.5 262144.0 163600.6 125280.0 75271.8 30576 231.889 33 1.581 233.469
S0C:Survivor space 0区容量(单位字节) 65536*8/1024 = 512k
S1C:Survivor space 1区容量
S0U:Survivor space 0区容量
S1U:Survivor space 1区已使用
EC:Eden space区容量
EU:Eden space区已使用
OC:Old代容量
OU:Old代已使用
PC:持久代容量
PU:持久代已使用
jstat -gccause pid 2000
[ ~]# jstat -gccause 9939 2000
S0 S1 E O P YGC YGCT FGC FGCT GCT LGCC GCC
0.00 2.09 23.61 62.50 60.08 30591 231.990 33 1.581 233.570 Allocation Failure No GC
0.00 2.09 24.77 62.50 60.08 30591 231.990 33 1.581 233.570 Allocation Failure No GC
0.00 2.09 26.00 62.50 60.08 30591 231.990 33 1.581 233.570 Allocation Failure No GC
S0:Heap上的Survivor space 0区已使用空间百分比
S1:Heap上的Survivor space 1区已使用空间百分比
E:Heap上的Eden space区已使用空间的百分比
O:Heap上的Old space区已使用空间的百分比
P:Perm space区已使用空间的百分比
YGC,YGCT,FGC,FGCT,GCT 分别表示从应用程序启动到采样young gc次数,young gc时间,full gc次数,full gc时间,gc总时间,单位秒。
jstat -gcutil pidGC统计信息(内存使用率)
[ ~]# jstat -gcutil 9939 2000
S0 S1 E O P YGC YGCT FGC FGCT GCT
1.88 0.00 40.43 62.83 60.08 30748 233.076 33 1.581 234.656
1.88 0.00 78.87 62.83 60.08 30748 233.076 33 1.581 234.656
0.00 1.13 2.61 62.83 60.08 30749 233.082 33 1.581 234.663
0.00 1.13 31.00 62.83 60.08 30749 233.082 33 1.581 234.663
0.00 1.13 63.96 62.83 60.08 30749 233.082 33 1.581 234.663
0.00 1.13 99.56 62.83 60.08 30749 233.082 33 1.581 234.663
1.09 0.00 0.90 62.83 60.08 30750 233.089 33 1.581 234.669
1.09 0.00 3.43 62.83 60.08 30750 233.089 33 1.581 234.669
从上图可看出两次YGC的过程。Eden Space满了,百分比。
jstat -gcnew pid
[ ~]# jstat -gcnew 9939 3000
S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
65536.0 65536.0 0.0 1176.4 15 15 32768.0 131072.0 76749.9 30755 233.128
65536.0 65536.0 0.0 1176.4 15 15 32768.0 131072.0 118414.8 30755 233.128
65536.0 65536.0 475.8 0.0 15 15 32768.0 131072.0 12474.0 30756 233.132
65536.0 65536.0 475.8 0.0 15 15 32768.0 131072.0 119806.2 30756 233.132
65536.0 65536.0 475.8 0.0 15 15 32768.0 131072.0 128737.3 30756 233.132
65536.0 65536.0 0.0 2581.2 15 15 32768.0 131072.0 3715.6 30757 233.139
65536.0 65536.0 0.0 2581.2 15 15 32768.0 131072.0 7210.5 30757 233.139
从上图可看出两次YGC过程,Eden space满了,容量。
TT:持有次数
MTT:最大持有次数
DSS:当前需要Survivor space容量。(Eden space已满)
jstat -gccapacity pid
[ ~]# jstat -gccapacity 9939 3000
NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC PGCMN PGCMX PGC PC YGC FGC
262144.0 262144.0 262144.0 65536.0 65536.0 131072.0 262144.0 262144.0 262144.0 262144.0 21248.0 131072.0 125280.0 125280.0 30767 33
NGCMN:年轻代初始化大小,最小。262144*8/1024/1024 = 2G
NGCMX:年轻代最大容量。
NGC:年轻代当前容量。
OGCMN:老年代初始化大小,最小。
OGCMX:老年代最大容量。
PGCMN:持久代初始化大小。
PGCMX:持久代最大容量。
PGC:持久代新生成容量。
jstat -gcold pid
[ ~]# jstat -gcold 9939
PC PU OC OU YGC FGC FGCT GCT
125280.0 75271.8 262144.0 164999.9 30813 33 1.581 235.115
jstat -gcoldcapacity pid
[ ~]# jstat -gcoldcapacity 9939
OGCMN OGCMX OGC OC YGC FGC FGCT GCT
262144.0 262144.0 262144.0 262144.0 30814 33 1.581 235.123
jstat -gcpermcapacity pid
jstat -class pid显示加载class数量及所占空间
[ ~]# jstat -class 9939
Loaded Bytes Unloaded Bytes Time
13196 25537.4 293 426.1 7.10
jstat -compiler pid显示VM实时编译的数量等信息
[ ~]# jstat -compiler 9939
Compiled Failed Invalid Time FailedType FailedMethod
4144 0 0 47.15 0
jstat -printcompilation pid显示VM执行的信息
[ ~]# jstat -printcompilation 9939
Compiled Size Type Method
4144 83 1 java/lang/ThreadLocal$ThreadLocalMap getEntryAfterMiss