• JVM的监控工具之jstat


    参考博客:https://www.cnblogs.com/lxcmyf/p/9878293.html

    jstat(JVMStatisticsMonitoringTool)是用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,
    在没有GUI图形界面,只提供了纯文本控制台环境的服务器上,它将是运行期定位虚拟机性能问题的首选工具。

    执行jstat的命令:我们可以看到可以跟[option],选项option代表着用户希望查询的虚拟机信息,主要分为3类:类装载、垃圾收集、运行期编译状况。可以跟VMID(唯一进程号),再跟interval和count代表查询间隔和次数,
    如果省略这两个参说明只查询一次。

    假设需要每250毫秒查询一次进程idea进程为40416垃圾收集状况,一共查询20次,那命令应当是: jstat  -gc  17312 250 20  

    执行结果中可以看出,S0C代表是Survivor0区,S1C代表是Survivor1区,C代表是容量的意思,U代表是已使用的意思,EC代表Eden区的容量,EU代表Eden区的使用。OC代表老年代的容量,OU代表老年代的使用。
    M代表元数据空间。CCSC和CCSU代表的是压缩类的容量大小和压缩类的使用空间大小,YGC的次数,YGCT回收年轻代所需的时间。FGC代表的是Full GC的次数,FGCT代表Full GC的时间,GCT代表垃圾回收整个的时间。

    jstat -options 

    可以列出当前JVM版本支持的选项,常见的有

    l  class (类加载器) 

    l  compiler (JIT) 

    l  gc (GC堆状态) 

    l  gccapacity (各区大小) 

    l  gccause (最近一次GC统计和原因) 

    l  gcnew (新区统计)

    l  gcnewcapacity (新区大小)

    l  gcold (老区统计)

    l  gcoldcapacity (老区大小)

    l  gcpermcapacity (永久区大小)

    l  gcutil (GC统计汇总)

    l  printcompilation (HotSpot编译统计)

    查看进程id为17312 的加载类信息 :jstat -class 17312

    显示列名   具体描述

    Loaded   装载的类的数量
    Bytes     装载类所占用的字节数
    Unloaded  卸载类的数量
    Bytes    卸载类的字节数
    Time    装载和卸载类所花费的时间

    查看gc发生的原因:

    jstat -gccause 17312  250 20

    可以看出当前进程最近一段时间内没有发生过GC

    假如我们来监测新生代,jstat -gcnew 17312  250 20  这个命令就只会列出和新生代相关的部分。

    可以看到老年代 相关的属性不再展示

    假如我们来监测老年代, jstat -gcold 17312  250 20  这个命令就只会列出和老年代相关的部分。

    可以看到年轻代的相关属性不再展示

     jstat -compiler <pid>显示VM实时编译的数量等信息。

     

    显示列名 具体描述
    Compiled 编译任务执行数量
    Failed 编译任务执行失败数量
    Invalid 编译任务执行失效数量
    Time 编译任务消耗时间
    FailedType 最后一个编译失败任务的类型
    FailedMethod 最后一个编译失败任务所在的类及方法

    jstat -gccapacity <pid>:可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小

    显示列名 具体描述
    NGCMN 年轻代(young)中初始化(最小)的大小(字节)
    NGCMX 年轻代(young)的最大容量 (字节)
    NGC 年轻代(young)中当前的容量 (字节)
    S0C 年轻代中第一个survivor(幸存区)的容量 (字节)
    S1C 年轻代中第二个survivor(幸存区)的容量 (字节)
    EC 年轻代中Eden(伊甸园)的容量 (字节)
    OGCMN old代中初始化(最小)的大小 (字节)
    OGCMX old代的最大容量(字节)
    OGC old代当前新生成的容量 (字节)
    OC Old代的容量 (字节)
    PGCMN perm代中初始化(最小)的大小 (字节)
    PGCMX perm代的最大容量 (字节)
    PGC perm代当前新生成的容量 (字节)
    PC Perm(持久代)的容量 (字节)
    YGC 从应用程序启动到采样时年轻代中gc次数
    FGC 从应用程序启动到采样时old代(全gc)gc次数

    jstat -gcutil <pid>:统计gc信息

    S0 年轻代中第一个survivor(幸存区)已使用的占当前容量百分比
    S1 年轻代中第二个survivor(幸存区)已使用的占当前容量百分比
    E 年轻代中Eden(伊甸园)已使用的占当前容量百分比
    O old代已使用的占当前容量百分比
    P perm代已使用的占当前容量百分比
    YGC 从应用程序启动到采样时年轻代中gc次数
    YGCT 从应用程序启动到采样时年轻代中gc所用时间(s)
    FGC 从应用程序启动到采样时old代(全gc)gc次数
    FGCT 从应用程序启动到采样时old代(全gc)gc所用时间(s)
    GCT 从应用程序启动到采样时gc用的总时间(s)

  • 相关阅读:
    男人要知道的40条忠告
    利用xtraBackup实现不停master服务做主从同步
    MY SQL 知识
    房价与阶级
    SQL Server数据库级别触发器
    mysql 5.7开启并行复制
    SQL Server 查出未提交事务(长事务)SQL
    开源数据集
    telnet
    Zend Studio使用综述
  • 原文地址:https://www.cnblogs.com/cheng21553516/p/11223557.html
Copyright © 2020-2023  润新知