1、jstat统计维度
#jstat 可以通过 -options 选项,查看系统所支持选项 [root@salt opt]# jstat -options -class -compiler -gc -gccapacity -gccause -gcmetacapacity -gcnew -gcnewcapacity -gcold -gcoldcapacity -gcutil -printcompilation
2、详细说明
jstat –class<pid>
[root@salt opt]# jps
3261 Bootstrap
9389 Jps
[root@saltstack opt]# jstat -class 3261
Loaded Bytes Unloaded Bytes Time
3614 7587.0 0 0.0 2.06
字段解释:
Loaded:加载了的类的数量
Bytes:加载了的类的大小,单为 Kb
Unloaded:卸载了的类的数量
Bytes:卸载了的类的大小,单为 Kb
Time:花在类的加载及卸载的时间
jstat -compiler <pid>
#显示 VM 实时编译的数量等信息。HotSpot 中即时编译器编译情况的统计
[root@salt opt]# jstat -compiler 3261
Compiled Failed Invalid Time FailedType FailedMethod
2295 0 0 12.31 0
解释:
Compiled:编译任务执行的次数
Failed:编译任务执行失败的次数
Invalid:编译任务非法执行的次数
Time:执行编译花费的时间
FailedType:最后一次编译失败的编译类型
FailedMethod:最后一次编译失败的类名及方法名
jstat -gc <pid>
#显示gc的信息,查看 gc 的次数,及时间
[root@salt opt]# jstat -gc 3261
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
20480.0 25600.0 20459.5 0.0 216064.0 144368.7 75264.0 40355.4 15104.0 14732.0 1792.0 1637.8 8 0.185 1 0.077 0.262
解释:
S0C:新生代中 Survivor space 中 S0 当前容量的大小(KB)
S1C:新生代中 Survivor space 中 S1 当前容量的大小(KB)
S0U:新生代中 Survivor space 中 S0 容量使用的大小(KB)
S1U:新生代中 Survivor space中S1容量使用的大小(KB)
EC:Eden space 当前容量的大小(KB)
EU:Eden space 容量使用的大小(KB)
OC:Old space 当前容量的大小(KB)
OU:Old space 使用容量的大小(KB)
PC:Permanent space 当前容量的大小(KB)
PU:Permanent space 使用容量的大小(KB)
YGC:从应用程序启动到采样时发生 Young GC 的次数
YGCT:从应用程序启动到采样时 Young GC 所用的时间(秒)
FGC:从应用程序启动到采样时发生 Full GC 的次数
FGCT:从应用程序启动到采样时 Full GC 所用的时间(秒)
GCT:T 从应用程序启动到采样时用于垃圾回收的总时间(单位秒),它的值等于 YGC+FGC
jstat -gccapacity <pid>
#显示,VM 内存中三代(young,old,perm)对象的使用和占用大小。新生代、老生代及持久代的存储容量情况
[root@salt opt]# jstat -gccapacity 3261
NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC
20992.0 336896.0 293376.0 20480.0 25600.0 216064.0 42496.0 674816.0 75264.0 75264.0 0.0 1062912.0 15104.0 0.0 1048576.0 1792.0 8 1
解释:
NGCMN:新生代的最小容量大小(KB)
NGCMX:新生代的最大容量大小(KB)
NGC:当前新生代的容量大小(KB)
S0C:当前新生代中survivor space 0的容量大小(KB)
S1C:当前新生代中survivor space 1的容量大小(KB)
EC:Eden space当前容量的大小(KB)
OGCMN:老生代的最小容量大小(KB)
OGCMX:老生代的最大容量大小(KB)
OGC:当前老生代的容量大小(KB)
OC:当前老生代的空间容量大小(KB)
PGCMN:持久代的最小容量大小(KB)
PGCMX:持久代的最大容量大小(KB)
PGC:当前持久代的容量大小(KB)
PC:当前持久代的空间容量大小(KB)
YGC:从应用程序启动到采样时发生 Young GC 的次数
FGC:从应用程序启动到采样时发生 Full GC 的次数
jstat -gcutil <pid>
#统计 gc 信息,新生代、老生代及持代垃圾收集的情况
[root@salt opt]# jstat -gcutil 3261 1000 3
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
99.90 0.00 66.82 53.62 97.54 91.40 8 0.185 1 0.077 0.262
99.90 0.00 66.82 53.62 97.54 91.40 8 0.185 1 0.077 0.262
99.90 0.00 66.82 53.62 97.54 91.40 8 0.185 1 0.077 0.262
解释:
S0:Heap上的 Survivor space 0 区已使用空间的百分比
S1:Heap上的 Survivor space 1 区已使用空间的百分比
E:Heap上的 Eden space 区已使用空间的百分比
O:Heap上的 Old space 区已使用空间的百分比
P:Perm space 区已使用空间的百分比
YGC:从应用程序启动到采样时发生 Young GC 的次数
YGCT:从应用程序启动到采样时 Young GC 所用的时间(单位秒)
FGC:从应用程序启动到采样时发生 Full GC 的次数
FGCT:从应用程序启动到采样时 Full GC 所用的时间(单位秒)
GCT:从应用程序启动到采样时用于垃圾回收的总时间(单位秒),它的值等于 YGC+FGC
参数:
3261:PID
1000:1000毫秒(1秒),每隔1秒统计一次
3:统计3次
jstat -gcnew <pid>
#年轻代对象的信息,新生代垃圾收集的情况
[root@salt opt]# jstat -gcnew 3261
S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
20480.0 25600.0 20459.5 0.0 3 15 25600.0 216064.0 146535.0 8 0.185
解释:
S0C:当前新生代中 survivor space 0 的容量大小(KB)
S1C:当前新生代中 survivor space 1 的容量大小(KB)
S0U:S0 已经使用的大小(KB)
S1U:S1 已经使用的大小(KB)
TT:Tenuring threshold,要了解这个参数,我们需要了解一点Java内存对象的结构,在Sun JVM中,(除了数组之外的)对象都有两个机器字
(words)的头部。第一个字中包含这个对象的标示哈希码以及其他一些类似锁状态和等标识信息,第二个字中包含一个指向对象的类的引用,
其中第二个字节就会被垃圾收集算法使用到。
在新生代中做垃圾收集的时候,每次复制一个对象后,将增加这个对象的收集计数,当一个对象在新生代中被复制了一定次数后,该算法即判定
该对象是长周期的对象,把他移动到老生代,这个阈值叫着tenuring threshold。这个阈值用于表示某个/些在执行批定次数youngGC后还活着的
对象,即使此时新生的的Survior没有满,也同样被认为是长周期对象,将会被移到老生代中。
MTT:Maximum tenuring threshold,用于表示TT的最大值。
DSS:Desired survivor size (KB)
EC:Eden space 当前容量的大小(KB)
EU:Eden space 已经使用的大小(KB)
YGC:从应用程序启动到采样时发生 Young GC 的次数
YGCT:从应用程序启动到采样时 Young GC 所用的时间(单位秒)
jstat -gcnewcapacity <pid>
#年轻代对象的信息及其占用量,新生代的存储容量情况
[root@salt opt]# jstat -gcnewcapacity 3261
NGCMN NGCMX NGC S0CMX S0C S1CMX S1C ECMX EC YGC FGC
20992.0 336896.0 293376.0 112128.0 20480.0 112128.0 25600.0 335872.0 216064.0 8 1
解释:
NGCMN:新生代的最小容量大小(KB)
NGCMX:新生代的最大容量大小(KB)
NGC:当前新生代的容量大小(KB)
S0CMX:新生代中 SO 的最大容量大小(KB)
S0C:当前新生代中 SO 的容量大小(KB)
S1CMX:新生代中 S1 的最大容量大小(KB)
S1C:当前新生代中 S1 的容量大小(KB)
ECMX:新生代中 Eden 的最大容量大小(KB)
EC:当前新生代中 Eden 的容量大小(KB)
YGC:从应用程序启动到采样时发生 Young GC 的次数
FGC:从应用程序启动到采样时发生 Full GC 的次数
jstat -gcold <pid>
#old 代对象的信息,老生代及持久代发生 GC 的情况
[root@salt opt]# jstat -gcold 3261
MC MU CCSC CCSU OC OU YGC FGC FGCT GCT
15104.0 14732.0 1792.0 1637.8 75264.0 40355.4 8 1 0.077 0.262
解释:
PC:当前持久代容量的大小(KB)
PU:持久代使用容量的大小(KB)
OC:当前老年代容量的大小(KB)
OU:老年代使用容量的大小(KB)
YGC:从应用程序启动到采样时发生 Young GC 的次数
FGC:从应用程序启动到采样时发生 Full GC 的次数
FGCT:从应用程序启动到采样时 Full GC 所用的时间(单位秒)
GCT:从应用程序启动到采样时用于垃圾回收的总时间(单位秒),它的值等于YGC+FGC
jstat -gcoldcapacity <pid>
#old 代对象的信息及其占用量,老生代的存储容量情况
[root@saltstack opt]# jstat -gcoldcapacity 3261
OGCMN OGCMX OGC OC YGC FGC FGCT GCT
42496.0 674816.0 75264.0 75264.0 8 1 0.077 0.262
解释:
OGCMN:老生代的最小容量大小(KB)
OGCMX:老生代的最大容量大小(KB)
OGC:当前老生代的容量大小(KB)
OC:当前新生代的空间容量大小(KB)
YGC:从应用程序启动到采样时发生 Young GC 的次数
FGC:从应用程序启动到采样时发生 Full GC 的次数
FGCT:从应用程序启动到采样时 Full GC 所用的时间(单位秒)
GCT:从应用程序启动到采样时用于垃圾回收的总时间(单位秒),它的值等于YGC+FGC
jstat -gcmetacapacity <pid>
#perm 对象的信息及其占用量
[root@saltstack opt]# jstat -gcmetacapacity 3261
MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC FGCT GCT
0.0 1062912.0 15104.0 0.0 1048576.0 1792.0 8 1 0.077 0.262
解释:
MCMN:最小元空间容量(kB)。
MCMX:最大元空间容量(kB)。
MC:元空间容量(kB)。
CCSMN:压缩类空间最小容量(kB)。
CCSMX:压缩类空间最大容量(kB)。
YGC:年轻一代GC事件的数量。
FGC:完整GC事件的数量。
FGCT:完全垃圾收集时间。
GCT:垃圾收集总时间。
jstat -gcpermcapacity Java 8 中已经没有这个命令了,改为 jstat -gcmetacapacity 了
jstat -printcompilation <pid>
#当前 VM 执行的信息
[root@salt opt]# jstat -printcompilation 3261
Compiled Size Type Method
2335 1032 1 java/lang/Throwable$WrappedPrintWriter println
解释:
Compiled:编译任务执行的次数
Size:方法的字节码所占的字节数
Type:编译类型
Method:指定确定被编译方法的类名及方法名,类名中使名“/”而不是“.”做为命名分隔符,方法名是被指定的类中的方法,这两个字段的格式是由
HotSpot中的“-XX:+PrintComplation”选项确定的。