美文网首页
Java jvm命令-jstat使用

Java jvm命令-jstat使用

作者: 编码前线 | 来源:发表于2018-06-23 23:04 被阅读69次

    jstat是一个用来监控虚拟机资源和性能的命令行工具。 可以展示本机或者远程虚拟机进程中的类装载、内存、垃圾回收、JIT编译等运行数据,是常见的线上jvm问题排查的工具,非常实用。

    命令格式:

    |

    jstat -help|-options

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

    |

    参数解释:

    option:选项,最经常使用的是gcutil

    vmid:vm进程号,也就是java进程PID

    interval: 时间间隔,单位秒或者毫秒 ,默认是毫秒,必须是正数。

    count : 统计次数,默认是一直打印。

    如果interval和count同时缺少,则默认为只查询一次。

    eg:

    jstat -gcutil 1234 1000 10

    表示查看进程PID为1234的GC情况,一共打印10次,每次间隔1s(1000ms)

    使用介绍:

    |

    jstat -help

    显示jstat的使用帮助,详细的使用帮助也可以通过man jstat来查看

    |
    |

    jstat -options

    列出当前JVM版本支持的选项,eg:

    image

    |
    |

    jstat -class <pid>

    类加载器的行为统计

    eg:

    image

    Loaded:装载类的数量

    Bytes:装载类的字节数(KB)

    Unloaded:卸载类的数量

    Bytes:卸载类的字节数(KB)

    Time:类装载和卸载所花费的时间

    |
    |

    **jstat -compiler <pid> **

    JIT编译器的行为统计

    eg:

    image

    Compiled:编译任务的执行数量

    Failed:编译任务执行失败数量

    Invalid:编译任务执行无效的数量

    Time:编译任务执行耗时

    FailedType:最后一个编译失败任务的类型

    FailedMethod:最后一个编译失败任务所在的类和方法

    |
    |

    jstat -gc <pid>

    堆上垃圾回收的行为统计,可以显示gc的信息,查看gc的次数及时间。

    eg:

    image

    S0C: 第一个survivor区的容量(单位是KB)

    S1C:第二个survivor区的容量(单位是KB)

    S0U:第一个survivor区使用的空间(单位KB)

    S1U: 第二个survivor区使用的空间(单位KB)

    EC:年轻代中Eden区的容量(KB)

    EU:年轻代中Eden区使用的空间(单位KB)

    OC:Old代(年老代)的容量(单位KB)

    OU:Old代(年老代)使用的空间(单位KB)

    PC:Perm(持久代)的容量(KB)

    PU:Perm(持久代)使用的空间(KB)

    YGC: 从程序启动到采样时年轻代GC的次数(Young GC次数)

    YGCT:从程序启动到采样时年轻代GC所用的时间(单位s)

    FGC:从程序启动到采样时old代GC(FullGC)的次数,准确的说是产生非YGC产生的STW的次数。

     表示非YGC的GC时STW的次数,所以如果发生了CMS GC,这个值+2,如果是Parallel Old GC,则+1,如果是full gc,也是+1 , 此参数的含义在CMS引入之后定义比较模糊。 FGC>0不一定是产生了FullGC。有可能是CMS GC
    

    FGCT:从程序启动到采样时old代GC(FullGC)所用的时间(s)

    GCT:从程序启动到采样时GC所用的时间

    |
    |

    **jstat -gccapacity <pid> **

    vm上各代容量和空间的统计, 可以显示各代的容量和占用大小

    eg:

    image

    NGCMN:年轻代(young)中初始化(最小)容量大小(单位KB)

    NGCMX:年轻代(young)最大容量大小(单位KB)

    NGC:年轻代(young)当前容量大小(单位KB)

    S0C:年轻代第一个Survivor区容量(单位KB)

    S1C:年轻代第二个Survivor区容量(单位KB)

    EC:年轻代Eden区容量(单位KB)

    OGCMN:年老代(old)中初始化容量大小(单位KB)

    OGCMX:年老代(old)中最大容量大小(单位KB)

    OGC:年老代(old)当前容量大小(单位KB)

    OC:年老代(old)当前容量大小(单位KB)

    PGCMN:永久代(perm)初始化容量大小(单位KB)

    PGCMX:永久代(perm)最大容量大小(单位KB)

    PGC:当前永久代(perm)容量大小(单位KB)

    PC:当前永久代(perm)容量大小(单位KB)

    YGC:年轻代(young)GC次数

    FGC:年老代(old)GC及Full GC次数(实际为非YGC产生的STW次数)

    |
    |

    jstat -gcutil <pid>

    GC情况统计,可以查看GC情况,最常用的一个功能

    eg:

    image

    S0 年轻代中第一个survivor(幸存区)已使用的占当前容量百分比

    S1 年轻代中第二个survivor(幸存区)已使用的占当前容量百分比

    E 年轻代中Eden(伊甸园)已使用的占当前容量百分比

    O old代已使用的占当前容量百分比

    P perm代已使用的占当前容量百分比

    YGC 从应用程序启动到采样时年轻代中gc次数

    YGCT 从应用程序启动到采样时年轻代中gc所用时间(s)

    FGC 从应用程序启动到采样时old代(全gc)gc次数 (实际为非YGC产生的STW次数)

    FGCT 从应用程序启动到采样时old代(全gc)gc所用时间(s)

    GCT 从应用程序启动到采样时gc用的总时间(s)

    |
    |

    jstat -gcnew <pid>:

    年轻代对象的信息。

    image

    S0C 年轻代中第一个survivor(幸存区)的容量 (单位KB)

    S1C 年轻代中第二个survivor(幸存区)的容量 (单位KB)

    S0U 年轻代中第一个survivor(幸存区)目前已使用空间 (单位KB)

    S1U 年轻代中第二个survivor(幸存区)目前已使用空间 (单位KB)

    TT 持有次数限制 ,晋升(存活)年龄阀值,

    MTT 最大持有次数限制 ,最大的存活年龄阀值

    EC 年轻代中Eden(伊甸园)的容量 (单位KB)

    EU 年轻代中Eden(伊甸园)目前已使用空间 (单位KB)

    YGC 从应用程序启动到采样时年轻代中gc次数

    YGCT 从应用程序启动到采样时年轻代中gc所用时间(s)

    |
    |

    jstat -gcnewcapacity <pid>: 年轻代对象的信息及其占用量。

    NGCMN 年轻代(young)中初始化(最小)的大小(KB)

    NGCMX 年轻代(young)的最大容量 (KB)

    NGC 年轻代(young)中当前的容量 (KB)

    S0CMX 年轻代中第一个survivor(幸存区)的最大容量 (KB)

    S0C 年轻代中第一个survivor(幸存区)的容量 (KB)

    S1CMX 年轻代中第二个survivor(幸存区)的最大容量 (KB)

    S1C 年轻代中第二个survivor(幸存区)的容量 (KB)

    ECMX 年轻代中Eden(伊甸园)的最大容量 (KB)

    EC 年轻代中Eden(伊甸园)的容量 (KB)

    YGC 从应用程序启动到采样时年轻代中gc次数

    FGC 从应用程序启动到采样时old代(全gc)gc次数

    |
    |

    jstat -gcold <pid>:old代对象的信息。

    PC Perm(持久代)的容量 (KB)

    PU Perm(持久代)目前已使用空间 (KB)

    OC Old代的容量 (KB)

    OU Old代目前已使用空间 (KB)

    YGC 从应用程序启动到采样时年轻代中gc次数

    FGC 从应用程序启动到采样时old代(全gc)gc次数

    FGCT 从应用程序启动到采样时old代(全gc)gc所用时间(s)

    GCT 从应用程序启动到采样时gc用的总时间(s)

    |
    |

    jstat -gcoldcapacity <pid>: old代对象的信息及其占用量。

    OGCMN old代中初始化(最小)的大小 (KB)

    OGCMX old代的最大容量(KB)

    OGC old代当前新生成的容量 (KB)

    OC Old代的容量 (KB)

    YGC 从应用程序启动到采样时年轻代中gc次数

    FGC 从应用程序启动到采样时old代(全gc)gc次数

    FGCT 从应用程序启动到采样时old代(全gc)gc所用时间(s)

    GCT 从应用程序启动到采样时gc用的总时间(s)

    |
    |

    jstat -gcpermcapacity <pid>: perm对象的信息及其占用量。

    PGCMN perm代中初始化(最小)的大小 (KB)

    PGCMX perm代的最大容量 (KB)

    PGC perm代当前新生成的容量 (KB)

    PC Perm(持久代)的容量 (KB)

    YGC 从应用程序启动到采样时年轻代中gc次数

    FGC 从应用程序启动到采样时old代(全gc)gc次数

    FGCT 从应用程序启动到采样时old代(全gc)gc所用时间(s)

    GCT 从应用程序启动到采样时gc用的总时间(s)

    |
    |

    jstat -printcompilation <pid>:当前VM执行的信息。

    Compiled 编译任务的数目

    Size 方法生成的KB码的大小

    Type 编译类型

    Method 类名和方法名用来标识编译的方法。类名使用/做为一个命名空间分隔符。方法名是给定类中的方法。上述格式是由-XX:+PrintComplation选项进行设置的

    |

    image

    相关文章

      网友评论

          本文标题:Java jvm命令-jstat使用

          本文链接:https://www.haomeiwen.com/subject/hjodyftx.html