• 011-JDK可视化监控工具-Jstat


    一、概述

      Jstat 是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。可见,Jstat是轻量级的、专门针对JVM的工具,非常适用。由于JVM内存设置较大,图中百分比变化不太明显

      一个极强的监视VM内存工具。可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。

      jstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程id,和所选参数。

      执行:cd $JAVA_HOME/bin中执行jstat,注意jstat后一定要跟参数。

    1.1、语法结构:

    Usage: jstat -help|-options

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

      jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数]

    参数解释:

    Options — 选项,我们一般使用 -gcutil 查看gc情况

    vmid    — VM的进程号,即当前运行的java进程号

    interval– 间隔时间,单位为秒或者毫秒

    count   — 打印次数,如果缺省则打印无数次

    1.2、具体使用

    其中Pid获取

    window下:jps

    linux:jps或ps -ef | grep java

    1》垃圾回收统计: jstat -gc pid

    S0C:第一个幸存区的大小
    S1C:第二个幸存区的大小
    S0U:第一个幸存区的使用大小
    S1U:第二个幸存区的使用大小
    EC:伊甸园区的大小
    EU:伊甸园区的使用大小
    OC:老年代大小
    OU:老年代使用大小
    MC:方法区大小
    MU:方法区使用大小
    CCSC:压缩类空间大小
    CCSU:压缩类空间使用大小
    YGC:年轻代垃圾回收次数
    YGCT:年轻代垃圾回收消耗时间
    FGC:老年代垃圾回收次数
    FGCT:老年代垃圾回收消耗时间
    GCT:垃圾回收消耗总时间

    2》堆内存统计:jstat -gccapacity pid

                可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小,

                如:PGCMN显示的是最小perm的内存使用量,PGCMX显示的是perm的内存最大使用量,

                PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。

                其他的可以根据这个类推, OC是old内纯的占用量。

    NGCMN:新生代最小容量
    NGCMX:新生代最大容量
    NGC:当前新生代容量
    S0C:第一个幸存区大小
    S1C:第二个幸存区的大小
    EC:伊甸园区的大小
    OGCMN:老年代最小容量
    OGCMX:老年代最大容量
    OGC:当前老年代大小
    OC:当前老年代大小
    MCMN:最小元数据容量
    MCMX:最大元数据容量
    MC:当前元数据空间大小
    CCSMN:最小压缩类空间大小
    CCSMX:最大压缩类空间大小
    CCSC:当前压缩类空间大小
    YGC:年轻代gc次数
    FGC:老年代GC次数

    3》统计gc信息统计:jstat -gcutil pid

    S0:幸存1区当前使用比例
    S1:幸存2区当前使用比例
    E:伊甸园区使用比例
    O:老年代使用比例
    M:元数据区使用比例
    CCS:压缩使用比例
    YGC:年轻代垃圾回收次数
    FGC:老年代垃圾回收次数
    FGCT:老年代垃圾回收消耗时间
    GCT:垃圾回收消耗总时间

    4》新生代垃圾回收统计:jstat -gcnew pid

    S0C:第一个幸存区大小
    S1C:第二个幸存区的大小
    S0U:第一个幸存区的使用大小
    S1U:第二个幸存区的使用大小
    TT:对象在新生代存活的次数
    MTT:对象在新生代存活的最大次数
    DSS:期望的幸存区大小
    EC:伊甸园区的大小
    EU:伊甸园区的使用大小
    YGC:年轻代垃圾回收次数
    YGCT:年轻代垃圾回收消耗时间

    5》新生代内存统计:jstat -gcnewcapacity pid

    NGCMN:新生代最小容量
    NGCMX:新生代最大容量
    NGC:当前新生代容量
    S0CMX:最大幸存1区大小
    S0C:当前幸存1区大小
    S1CMX:最大幸存2区大小
    S1C:当前幸存2区大小
    ECMX:最大伊甸园区大小
    EC:当前伊甸园区大小
    YGC:年轻代垃圾回收次数
    FGC:老年代回收次数

    6》老年代垃圾回收统计:jstat -gcold pid

    MC:方法区大小
    MU:方法区使用大小
    CCSC:压缩类空间大小
    CCSU:压缩类空间使用大小
    OC:老年代大小
    OU:老年代使用大小
    YGC:年轻代垃圾回收次数
    FGC:老年代垃圾回收次数
    FGCT:老年代垃圾回收消耗时间
    GCT:垃圾回收消耗总时间

    7》老年代内存统计:jstat -gcoldcapacity pid

    OGCMN:老年代最小容量
    OGCMX:老年代最大容量
    OGC:当前老年代大小
    OC:老年代大小
    YGC:年轻代垃圾回收次数
    FGC:老年代垃圾回收次数
    FGCT:老年代垃圾回收消耗时间
    GCT:垃圾回收消耗总时间

    8》持久代:jstat -gcpermcapacity pid

              perm对象的信息及其占用量。

    9》类加载统计:jstat -class pid

    Loaded:加载class的数量
    Bytes:所占用空间大小
    Unloaded:未加载数量
    Bytes:未加载占用空间
    Time:时间       

    10》编译统计:jstat -compiler pid

    Compiled:编译数量。
    Failed:失败数量
    Invalid:不可用数量
    Time:时间
    FailedType:失败类型
    FailedMethod:失败的方法

    11》JVM编译方法统计:jstat -printcompilation pid

    Compiled:最近编译方法的数量
    Size:最近编译方法的字节码数量
    Type:最近编译方法的编译类型。
    Method:方法名标识。

    12、jstat -gcmetacapacity pid 元数据空间统计

    MCMN:最小元数据容量
    MCMX:最大元数据容量
    MC:当前元数据空间大小
    CCSMN:最小压缩类空间大小
    CCSMX:最大压缩类空间大小
    CCSC:当前压缩类空间大小
    YGC:年轻代垃圾回收次数
    FGC:老年代垃圾回收次数
    FGCT:老年代垃圾回收消耗时间
    GCT:垃圾回收消耗总时间

    1.3、术语的中文解释:

             S0C:年轻代中第一个survivor(幸存区)的容量 (字节)
             S1C:年轻代中第二个survivor(幸存区)的容量 (字节)
             S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
             S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
               EC:年轻代中Eden(伊甸园)的容量 (字节)
               EU:年轻代中Eden(伊甸园)目前已使用空间 (字节)
               OC:Old代的容量 (字节)
               OU:Old代目前已使用空间 (字节)
               PC:Perm(持久代)的容量 (字节)
               PU:Perm(持久代)目前已使用空间 (字节)
             YGC:从应用程序启动到采样时年轻代中gc次数
           YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
             FGC:从应用程序启动到采样时old代(全gc)gc次数
           FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
             GCT:从应用程序启动到采样时gc用的总时间(s)

        NGCMN:年轻代(young)中初始化(最小)的大小 (字节)

        NGCMX:年轻代(young)的最大容量 (字节)

            NGC:年轻代(young)中当前的容量 (字节)

       OGCMN:old代中初始化(最小)的大小 (字节) 

       OGCMX:old代的最大容量 (字节)

           OGC:old代当前新生成的容量 (字节)

       PGCMN:perm代中初始化(最小)的大小 (字节) 

       PGCMX:perm代的最大容量 (字节)   

           PGC:perm代当前新生成的容量 (字节)

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

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

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

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

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

       M:元数据区使用比例

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

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

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

           DSS:当前需要survivor(幸存区)的容量 (字节)(Eden区已满)

              TT: 持有次数限制

           MTT : 最大持有次数限制

  • 相关阅读:
    牛客练习赛64 D-宝石装箱(容斥定律,背包)
    CF-GYM-[2019 USP Try-outs] 部分题解
    [Codeforces Round #642 (Div. 3)] ABCDEF题解
    [NCD 2019] G. Ali and the Breakfast (解析几何)
    [AtCoder Beginner Contest 165] E
    [Educational Codeforces Round 86 (Rated for Div. 2)] E. Placing Rooks (组合数学,容斥定律)
    [AtCoder Beginner Contest 164] -E
    牛客算法周周练3 C -小雨坐地铁(分层最短路)
    HDU 5726 GCD (RMQ + 二分)
    Codeforces Round #362 (Div. 2) C. Lorenzo Von Matterhorn (类似LCA)
  • 原文地址:https://www.cnblogs.com/bjlhx/p/8878809.html
Copyright © 2020-2023  润新知