java jstat 用法

jstat是jdk自带的JVM内存统计工具,用于查看heap的内存和垃圾回收情况。

用法:

jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

参数定义:

  • options:选项,通过jstat -options查看支持的选项,目前支持
    • -class
    • -compiler
    • -gc
    • -gccapacity
    • -gccause
    • -gcmetacapacity
    • -gcnew
    • -gcnewcapacity
    • -gcold
    • -gcoldcapacity
    • -gcutil
    • -printcompilation
  • lines: 使用interval参数,会在间隔指定时间后输出当前JVM内存的状态,这个参数是指定输出多少行后,再输出title,这样就不需要翻屏看这一列的title了。
  • vmid: 虚拟机的pid
  • interval:间隔多少时间后循环输出,不指定的话,就输出一次
  • count:指定输出多少次

实例:

class

jstat -class pid

输出如下:

显示的是加载的类的数量和占用的字节数、卸载的类的数量和字节数,以及加载卸载所花时间。

compiler

jstat -compiler pid

  • Compiled: 编译的数量
  • Failed: 编译失败的数量
  • Invalid: 编译失效的数量
  • Time: 编译任务消耗时间
  • FailedType: 最后一次编译失败类型
  • FailedMethod:最后一次编译失败的类和方法

complier展示的是编译的统计

gc

jstat -gc

  • S0C 年轻代第一个survivor区的容量
  • S1C 年轻代第二个survivor区的容量
  • S0U 年轻代第一个survivor区的已用空间(字节)
  • S1U 年轻代第一个survivor区的已用空间(字节)
  • EC 年轻代eden区的容量
  • EU 年轻代eden区的已用空间
  • OC 老年代的容量
  • OU 老年代的已用空间
  • MC 元空间(Metaspace)的容量
  • MU 元空间的已用空间
  • CCSC 压缩的类空间容量
  • CCSU 压缩的类空间已用空间
  • YGC 年轻代垃圾回收事件的数量
  • YGCT 年轻代垃圾回收时间
  • FGC Full GC事件数量
  • FGCT Full GC时间
  • GCT GC总时间

gc展示的是垃圾回收的统计,这个例子基于java 8,java 8之前是没有元空间(MetaSpace)概念的,而是永久代(PC,PU)

gccapacity

jstat -gccapacity pid

  • NGCMN 年轻代最小(初始化)大小
  • NGCMX 年轻代最大容量
  • NGC 年轻代当前大小
  • S0C 年轻代第一个survivor区容量
  • S1C 年轻代第二个survivor区容量
  • EC 年轻代Eden区容量
  • OGCMN 老年代初始化容量
  • OGCMX 老年代最大容量
  • OGC 老年代当前占用容量
  • OC 老年代空间容量
  • MCMN 元空间初始容量
  • MCMX 元空间最大容量
  • CCSMN 压缩类空间初始容量
  • CCSMX 压缩类空间最大容量
  • CCSC 当前压缩类空间容量
  • YGC 年轻代垃圾回收事件数量
  • FGC Full GC事件数量

gccapacity展示的是各个空间的初始容量、最大容量、以及当前容量

gcnew

  • S0C 年轻代第一个survivor区容量
  • S1C 年轻代第二个survivor区容量
  • S0U 年轻代第一个survivor区已用空间
  • S1U 年轻代第二个survivor区已用空间
  • TT 持有次数限制
  • MTT 最大持有次数限制(超过这个值放入old)
  • EC 年轻代的容量
  • EU 年轻代的已用空间
  • YGC 年轻代GC事件次数
  • YGCT 年轻代GC消耗的时间

gcnew展示的年轻代的信息

后面的-gcnewcapacity -gcold -gcoldcapacity -gcutil字段都类似,不再演示。-printcompilation展示的是编译相关的信息。

© 2017, 冰冻鱼. 请尊重作者劳动成果,复制转载保留本站链接! 应用开发笔记