jstat命令详解分析

无情 阅读:142 2020-09-11 10:42:53 评论:0
    • 摘要:用以判断JVM是否存在内存问题呢?如何判断JVM垃圾回收是否正常?一般的top指令基本上满足不了这样的需求,因为它主要监控的是总体的系统资源,很难定位到java应用程序。   Jstat是JDK自带的一个轻量级小工具。全称“JavaVirtualMachinestatisticsmonitoringtool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heapsize和垃圾
    • 用以判断JVM是否存在内存问题呢?如何判断JVM垃圾回收是否正常?一般的top指令基本上满足不了这样的需求,因为它主要监控的是总体的系统资源,很难定位到java应用程序。  
        
      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后一定要跟参数。  
        
         
        
      jstat :对VM内存使用量进行监控。  
          jstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程id,和所选参数。以下详细介绍各个参数的意义。  
          jstat -class pid:显示加载class的数量,及所占空间等信息。  
          jstat -compiler pid:显示VM实时编译的数量等信息。  
          jstat -gc pid:可以显示gc的信息,查看gc的次数,及时间。其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。  
          jstat -gccapacity:可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小,如:PGCMN显示的是最小perm的内存使用量,PGCMX显示的是perm的内存最大使用量,PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。其他的可以根据这个类推, OC是old内纯的占用量。  
          jstat -gcnew pid:new对象的信息。  
          jstat -gcnewcapacity pid:new对象的信息及其占用量。  
          jstat -gcold pid:old对象的信息。  
          jstat -gcoldcapacity pid:old对象的信息及其占用量。  
          jstat -gcpermcapacity pid: perm对象的信息及其占用量。  
          jstat -util pid:统计gc信息统计。  
          jstat -printcompilation pid:当前VM执行的信息。  
          除了以上一个参数外,还可以同时加上 两个数字,如:jstat -printcompilation 3024 250 6是每250毫秒打印一次,一共打印6次,还可以加上-h3每三行显示一下标题

       

       

      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执行的信息。

              一些术语的中文解释:

               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 : 最大持有次数限制

标签:javaJVM
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

发表评论
搜索
排行榜
关注我们

扫一扫关注我们,了解最新精彩内容