Java-性能调优工具-jstat
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 pid GC统计信息(内存使用率)
[ ~]# 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