各列意义:
S0C:年轻代中第一个存活区的大小
S1C:年轻代中第二个存活区的大小
S0U:年轻代中第一个存活区已使用的空间 (字节)
S1U:年轻代中第二个存活区已使用的空间 (字节)
EC: Edem区大小
EU: 年轻代中Edem区已使用的空间 (字节)
OC: 老年代大小
OU: 老年代已使用的空间 (字节)
PC: 持久代大小
PU: 持久代已使用的空间 (字节)
YGC: 从应用程序启动到采样时young gc的次数
YGCT: 从应用程序启动到采样时young gc的所用的时间(s)
FGC: 从应用程序启动到采样时full gc的次数
FGCT: 从应用程序启动到采样时full gc的所用的时间
GCT: 从应用程序启动到采样时整个gc所用的时间
如果young gc所用的时间比较长,如几秒几十秒,则肯定不正常。
# jstat -gcutil 25444
# jstat -gcutil 25444 1000 5
各列意义:
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 — 从应用程序启动到采样时用于垃圾回收的总时间(单位秒)
我们可以看到,5次young gc之后,垃圾内存被从Eden space区(E)放入了Old space区(O),并引起了百分比的变化,导致Survivor space使用的百分比从73.54%(S0)降到0%(S1)。有效释放了内存空间。绿框中,我们可以看到,一次full gc之后,Old space区(O)的内存被回收,从99.05%降到67.52%。
图中同时打印了young gc和full gc的总次数、总耗时。而,每次young gc消耗的时间,可以用相间隔的两行YGCT相减得到。每次full gc消耗的时间,可以用相隔的两行FGCT相减得到。例如红框中表示的第一行、第二行之间发生了1次young gc,消耗的时间为0.252-0.252=0.0秒。
常驻内存区(P)的使用率,始终停留在98.49%左右,说明常驻内存没有突变,比较正常。
如果young gc和full gc能够正常发生,而且都能有效回收内存,常驻内存区变化不明显,则说明java内存释放情况正常,垃圾回收及时,java内存泄露的几率就会大大降低。但也不能说明一定没有内存泄露。
GCT 是YGCT 和FGCT的时间总和。
以上,介绍了Jstat按百分比查看gc情况的功能。
其实,它还有功能,例如加载类信息统计功能、内存池信息统计功能等,那些是以绝对值的形式打印出来的,比较少用。
[root@localhost bin]# ps -ef | grep java
root 25917 1 2 23:23 pts/2 00:00:05 /usr/local/jdk1.5/bin/java -Djava.endorsed.dirs=/usr/local/jakarta-tomcat-5.0.30/common/endorsed -classpath /usr/local/jdk1.5/lib/tools.jar:/usr/local/jakarta-tomcat-5.0.30/bin/bootstrap.jar:/usr/local/jakarta-tomcat-5.0.30/bin/commons-logging-api.jar -Dcatalina.base=/usr/local/jakarta-tomcat-5.0.30 -Dcatalina.home=/usr/local/jakarta-tomcat-5.0.30 -Djava.io.tmpdir=/usr/local/jakarta-tomcat-5.0.30/temp org.apache.catalina.startup.Bootstrap start
[root@localhost bin]# jstat -class 25917
装载的类的数量
装载类所占用的字节数
卸载类的数量
卸载类的字节数
装载和卸载类所花费的时间
# jstat -compiler 25917
编译任务执行数量
编译任务执行失败数量
编译任务执行失效数量
编译任务消耗时间
最后一个编译失败任务的类型
最后一个编译失败任务所在的类及方法
jstat –gccapacity :可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小,如:PGCMN显示的是最小perm的内存使用量,PGCMX显示的是perm的内存最大使用量,PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。其他的可以根据这个类推, OC是old内纯的占用量。
# jstat -gccapacity 25917
年轻代(young)的最大容量 (字节)
年轻代(young)中当前的容量 (字节)
年轻代中第一个survivor(幸存区)的容量 (字节)
年轻代中第二个survivor(幸存区)的容量 (字节)
年轻代中Eden(伊甸园)的容量 (字节)
old代中初始化(最小)的大小 (字节)
old代的最大容量(字节)
old代当前新生成的容量 (字节)
Old代的容量 (字节)
perm代中初始化(最小)的大小 (字节)
Perm(持久代)的容量 (字节)
从应用程序启动到采样时年轻代中gc次数
从应用程序启动到采样时old代(全gc)gc次数
# jstat -gcnew 25917
年轻代中第一个survivor(幸存区)的容量 (字节)
年轻代中第二个survivor(幸存区)的容量 (字节)
年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
持有次数限制 最大持有次数限制
年轻代中Eden(伊甸园)的容量 (字节)
年轻代中Eden(伊甸园)目前已使用空间 (字节)
从应用程序启动到采样时年轻代中gc次数
从应用程序启动到采样时年轻代中gc所用时间(s)
# jstat -gcnewcapacity 25917
NGCMN NGCMX NGC S0CMX S0C S1CMX S1C ECMX EC YGC FGC
640.0 4992.0 832.0 64.0 448.0 448.0 64.0 4096.0 704.0 168 6
年轻代(young)中初始化(最小)的大小(字节)
年轻代(young)的最大容量 (字节)
年轻代(young)中当前的容量 (字节)
年轻代中第一个survivor(幸存区)的最大容量 (字节)
年轻代中第一个survivor(幸存区)的容量 (字节)
年轻代中第二个survivor(幸存区)的最大容量 (字节)
年轻代中第二个survivor(幸存区)的容量 (字节)
年轻代中Eden(伊甸园)的最大容量 (字节)
年轻代中Eden(伊甸园)的容量 (字节)
从应用程序启动到采样时年轻代中gc次数
从应用程序启动到采样时old代(全gc)gc次数
# jstat -gcold 25917
Perm(持久代)的容量 (字节)
Perm(持久代)目前已使用空间 (字节)
Old代的容量 (字节)
Old代目前已使用空间 (字节)
从应用程序启动到采样时年轻代中gc次数
从应用程序启动到采样时old代(全gc)gc次数
从应用程序启动到采样时old代(全gc)gc所用时间(s)
从应用程序启动到采样时gc用的总时间(s)
[root@localhost bin]# jstat -gcoldcapacity 25917
OGCMN OGCMX OGC OC YGC FGC FGCT GCT
1408.0 60544.0 9504.0 9504.0 169 6 0.335 0.591
old代中初始化(最小)的大小 (字节)
old代的最大容量(字节)
old代当前新生成的容量 (字节)
Old代的容量 (字节)
从应用程序启动到采样时年轻代中gc次数
从应用程序启动到采样时old代(全gc)gc次数
从应用程序启动到采样时old代(全gc)gc所用时间(s)
从应用程序启动到采样时gc用的总时间(s)
# jstat -gcpermcapacity 25917
perm代中初始化(最小)的大小 (字节)
perm代的最大容量 (字节)
perm代当前新生成的容量 (字节)
Perm(持久代)的容量 (字节) 从应用程序启动到采样时年轻代中gc次数
从应用程序启动到采样时old代(全gc)gc次数
从应用程序启动到采样时old代(全gc)gc所用时间(s)
从应用程序启动到采样时gc用的总时间(s)
# jstat -printcompilation -h3 25917 1000 5
每1000毫秒打印一次,一共打印5次,还可以加上-h3每三行显示一下标题。
编译任务的数目
方法生成的字节码的大小
编译类型
类名和方法名用来标识编译的方法。
类名使用/做为一个命名空间分隔符。方法名是给定类中的方法。上述格式是由-XX:+PrintComplation选项进行设置的
参考资料:
1、http://xueliang.iteye.com/blog/
2、http://blog.csdn.net/zhaozheng7758/article/details/
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/12002.html