• jstat命令使用


    jstat命令使用

    jstat是JDK自带的一个轻量级小工具,全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。

    命令格式

    ➜  ~ jstat -help
    Usage: jstat -help|-options
           jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
    
    • option:参数选项
    • -t:可以在打印的列加上TImestamp列,用于显示系统运行时间
    • -h:在周期性输出数据时,指定在输出多少行之后输出一次表头
    • vmid:Virtual Machine,进程的PID
    • interval:每次执行的时间间隔,单位为毫秒
    • count:用于指定输出多少次记录,缺省则会一直打印

    jstat -options

    ➜  ~ jstat -options
    -class # 输出ClassLoad相关的信息
    -compiler # 输出JIT编译的相关信息
    -printcompilation # 输出JIT编译的方法信息
    -gc # 输出和GC相关的堆信息
    -gccapacity # 输出各个代的容量及使用情况
    -gcutil # 输出垃圾收集器的信息
    -gccause # 输出GC的相关信息,同时显示最后一次或当前正在发生GC的诱因
    -gcmetacapacity # 输出metaspace的大小和使用情况
    -gcnew # 输出新生代的信息
    -gcnewcapacity # 输出新生代大小和使用情况
    -gcold # 输出老年代的信息
    -gcoldcapacity # 输出老年代的大小和使用情况
    

    -class

    ➜  ~ jstat -class <pid>
    Loaded  Bytes  Unloaded  Bytes     Time
      9232 17587.8        0     0.0       3.93
    
    • Loaded:已加载的类的数量
    • Bytes:已加载的类所占用的字节数
    • Unloaded:已卸载的类的数量
    • Bytes:已卸载类的字节数
    • Time:加载和卸载类所花费的时间

    -compiler & -printcompilation

    ➜  ~ jstat -compiler <pid>
    Compiled Failed Invalid   Time   FailedType FailedMethod
        5161      0       0     1.46          0
    ➜  ~ jstat -printcompilation 12757
    Compiled  Size  Type Method
        5354      5    1 org/apache/commons/pool2/impl/GenericObjectPool getMaxIdle
    

    -compiler

    • Compiled:编译任务执行的数量
    • Failed:编译任务执行失败的数量
    • Invalid:编译任务执行失效的数量
    • Time:编译任务消耗的时间
    • FailedType:最后一个编译失败任务的类型
    • FailedMethod:最后一个编译失败任务所在的类及方法

    -printcompilation

    • Compiled:编译任务执行的数量
    • Size:最近编译方法的字节码数量
    • Type:最近编译方法的编译类型
    • Method:最近编译的方法

    -gc

    ➜  ~ jstat -gc <pid>
     S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT
    78336.0 78336.0 47364.9  0.0   629760.0 417152.7 1310720.0    120.0    45952.0 44923.2 5760.0 5573.3      2    0.069   0      0.000    0.069
    
    • S0C:S0区的容量
    • S1C:S1区的容量
    • S0U:S0区已使用的容量
    • S1U:S1区已使用的容量
    • EC:Eden区的容量
    • EU:Eden区已使用的容量
    • OC:Old区的容量
    • OU:Old区已使用的容量
    • MC:MetaSpace区的容量
    • MU:MetaSpace区已使用的容量
    • CCSC:压缩类的容量
    • CCSU:压缩类已使用的容量
    • YGC:YoungGC的次数
    • YGCT:YoungGC耗时
    • FGC:FullGC的次数
    • FGCT:FullGC的耗时
    • GCT:GC总耗时

    -gccapacity

    ➜  ~ jstat -gccapacity <pid>
     NGCMN    NGCMX     NGC     S0C   S1C       EC      OGCMN      OGCMX       OGC         OC       MCMN     MCMX      MC     CCSMN    CCSMX     CCSC    YGC    FGC
    786432.0 786432.0 786432.0 78336.0 78336.0 629760.0  1310720.0  1310720.0  1310720.0  1310720.0      0.0 1089536.0  45952.0      0.0 1048576.0   5760.0      2     0
    
    • NGCMN:年轻代初始化的最小容量
    • NGCMX:年轻代初始化的最大容量
    • NGC:当前年轻代的实际容量
    • S0C:S0区的容量
    • S1C:S1区的容量
    • EC:Eden区的容量
    • OGCMN:老年代初始化的最小容量
    • OGCMX:老年代初始化的最大容量
    • OGC:当前老年代的实际容量
    • OC:当前老年代的实际容量(与OGC什么区别?)
    • MCMN:MetaSpace初始化的最小容量
    • MCMX:MetaSpace初始化的最大容量
    • MC:当前MetaSpace的实际容量
    • CCSMN:压缩类的最小容量
    • CCSMX:压缩类的最大容量
    • XXSC:压缩类的当前容量
    • YGC:从启动到现在YoungGC的次数
    • FGC:从启动到现在FullGC的次数

    -gcutil & -gccause

    ➜  ~ jstat -gcutil <pid>
      S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT
     60.46   0.00  67.09   0.01  97.76  96.76      2    0.069     0    0.000    0.069
    ➜  ~ jstat -gccause <pid>
      S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT    LGCC                 GCC
     60.46   0.00  67.09   0.01  97.76  96.76      2    0.069     0    0.000    0.069 Allocation Failure   No GC
    
    • S0:S0区已使用的百分比
    • S1:S1区已使用的百分比
    • E:Eden区已使用的百分比
    • O:Old区已使用的百分比
    • M:MetaSpace区已使用的百分比
    • CCS:不知道???
    • YGC:从启动到现在YoungGC执行次数
    • YGCT:最后一次执行YoungGC所消耗的时间
    • FGC:从启动到现在FullGC的执行次数
    • FGCT:最后一次执行FullGC所消耗的时间
    • GCT:最后一次YoungGC+FullGC消耗的时间
    • 我---是---分---割---线
    • LGCC:最后一次GC发生的原因
    • GCC:当前GC的原因,No GC表示当前没有执行GC

    -gcmetacapacity

    ➜  ~ jstat -gcmetacapacity <pid>
       MCMN       MCMX        MC       CCSMN      CCSMX       CCSC     YGC   FGC    FGCT     GCT
           0.0  1089536.0    45952.0        0.0  1048576.0     5760.0     2     0    0.000    0.069
    
    • MCMN:MetaSpace的最小容量
    • MCMX:MetaSpace的最大容量
    • MC:当前MetaSpace的容量
    • CCSMN:压缩类空间的最小容量
    • CCSMX:压缩类空间的最大容量
    • CCSC:当前压缩类空间的容量
    • YGC:从启动到现在YoungGC执行次数
    • FGC:从启动到现在FullGC的执行次数
    • FGCT:最后一次执行FullGC所消耗的时间
    • GCT:最后一次YoungGC+FullGC消耗的时间

    -gcnew & -gcnewcapacity

    ➜  ~ jstat -gcnew <pid>
     S0C    S1C    S0U    S1U   TT MTT  DSS      EC       EU     YGC     YGCT
    78336.0 78336.0 47364.9    0.0 15  15 78336.0 629760.0 444596.5      2    0.069
    ➜  ~ jstat -gcnewcapacity <pid>
      NGCMN      NGCMX       NGC      S0CMX     S0C     S1CMX     S1C       ECMX        EC      YGC   FGC
      786432.0   786432.0   786432.0  78336.0  78336.0  78336.0  78336.0   629760.0   629760.0     2     0
    

    简单解释一下这几个参数,其它参数应该都知道了。

    • TT:对象在新生代存活的次数?
    • MTT:对象在新生代存活的最大次数?
    • DSS:期望的幸存区容量

    -gcold & -gcoldcapacity

    ➜  ~ jstat -gcold <pid>
       MC       MU      CCSC     CCSU       OC          OU       YGC    FGC    FGCT     GCT
     45952.0  44923.2   5760.0   5573.3   1310720.0       120.0      2     0    0.000    0.069
    ➜  ~ jstat -gcoldcapacity <pid>
       OGCMN       OGCMX        OGC         OC       YGC   FGC    FGCT     GCT
      1310720.0   1310720.0   1310720.0   1310720.0     2     0    0.000    0.069
    

    上面的参数理解了,这些参数应该没什么问题了。

  • 相关阅读:
    MPlayer 开始支持RTSP/RTP流媒体文件
    Linux(CentOS 6.4)系统中安装mplayer
    IP实时传输协议RTP/RTCP详解
    --without-v4l ,make clean, 重新make即可。
    关于IP数据包首部校验字段的理解
    转[总结]FFMPEG视音频编解码零基础学习方法 .
    指针为什么分类型
    IOS-ARC和垃圾回收机制
    IOS-frame和bounds有什么不同
    iOS-消息推送机制的实现
  • 原文地址:https://www.cnblogs.com/wuqinglong/p/10913318.html
Copyright © 2020-2023  润新知