zoukankan      html  css  js  c++  java
  • jstat查看jvm的GC

    jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix平台上简单察看当前java进程的一些简单情况。

     jps –v  找到pid 
     
    一、jstat查看 gc实时执行情况
    jstat命令命令格式:
    jstat [Options] vmid [interval] [count]
     
    命令参数说明:
    Options,一般使用 -gcutil 或  -gc 查看gc 情况
    pid,当前运行的 java进程号 
    interval,间隔时间,单位为秒或者毫秒 
    count,打印次数,如果缺省则打印无数次
     
    Options 参数如下:
    -gc:统计 jdk gc时 heap信息,以使用空间字节数表示
    -gcutil:统计 gc时, heap情况,以使用空间的百分比表示
    -class:统计 class loader行为信息
    -compile:统计编译行为信息
    -gccapacity:统计不同 generations(新生代,老年代,持久代)的 heap容量情况
    -gccause:统计引起 gc的事件
    -gcnew:统计 gc时,新生代的情况
    -gcnewcapacity:统计 gc时,新生代 heap容量
    -gcold:统计 gc时,老年代的情况
    -gcoldcapacity:统计 gc时,老年代 heap容量
    -gcpermcapacity:统计 gc时, permanent区 heap容量
     
    示例 
     $ jstat -gc 6376 5000  
    每5 秒一次显示进程号为6376 的 java进成的 GC情况,结果如下图:
      $  jstat –gc 23264 200 30

     观察到倒数第三列是full gc 的次数 ,非常频繁,命令是每200ms进行采样,采样30次,FGC每增加一次进行了一次full gc ,同时进行了一次ygc ,也可以从s0和s1有数据交换看出有ygc,同时eden used已经接近100%了,看来默认配置eden 只有170M过小导致,频繁full gc。

     一些术语的中文解释:         

             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代已使用的占当前容量百分比 
             S0CMX:年轻代中第一个survivor(幸存区)的最大容量 (字节) 
             S1CMX :年轻代中第二个survivor(幸存区)的最大容量 (字节) 
             ECMX:年轻代中Eden(伊甸园)的最大容量 (字节) 
             DSS:当前需要survivor(幸存区)的容量 (字节)(Eden区已满) 
             TT: 持有次数限制 
             MTT : 最大持有次数限制 
     
    jstat 
           1. jstat -gc pid 
                可以显示gc的信息,查看gc的次数,及时间。 
                其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。 
          2.jstat -gccapacity pid 
                可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小, 
                如:PGCMN显示的是最小perm的内存使用量,PGCMX显示的是perm的内存最大使用量, 
                PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。 
                其他的可以根据这个类推, OC是old内纯的占用量。 
         3.jstat -gcutil pid 
                统计gc信息统计。 
         4.jstat -gcnew pid 
               年轻代对象的信息。 
         5.jstat -gcnewcapacity pid 
               年轻代对象的信息及其占用量。 
         6.jstat -gcold pid 
              old代对象的信息。 
         7.stat -gcoldcapacity pid 
              old代对象的信息及其占用量。 
         8.jstat -gcpermcapacity pid 
              perm对象的信息及其占用量。 
         9.jstat -class pid 
              显示加载class的数量,及所占空间等信息。 
         10.jstat -compiler pid 
              显示VM实时编译的数量等信息。 
         11.stat -printcompilation pid 
              当前VM执行的信息。 
  • 相关阅读:
    UIViewController的View显示在导航栏下面如何解决?
    iOS开发常用之 HUD 弹窗
    IOS window.rootViewController 切换原rootViewController无法释放(问题解决)
    xcode git修改远程仓库地址
    iOS比较好用的第三方框架
    iOS的几种页面跳转方式
    ios-创建根视图控制器的三种方式
    iOS APP的AppDelegate理解
    iOS APP生命周期 和 UIViewController的生命周期
    APP自动化测试—appium教程
  • 原文地址:https://www.cnblogs.com/kaleidoscope/p/9474764.html
Copyright © 2011-2022 走看看