当前位置:网站首页 > 技术博客 > 正文

jstat-gcutil



各列意义

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/

版权声明


相关文章:

  • emule服务器地址列表地址2025-09-13 07:00:59
  • 微信小程序开发教学视频2025-09-13 07:00:59
  • cpim协议2025-09-13 07:00:59
  • spring boot+redis2025-09-13 07:00:59
  • linuxtap2025-09-13 07:00:59
  • js怎么注释2025-09-13 07:00:59
  • opcache_compile_file2025-09-13 07:00:59
  • gee引擎说明书2025-09-13 07:00:59
  • 上传文件 springboot2025-09-13 07:00:59
  • sscom串口助手使用2025-09-13 07:00:59