jstat

  jstat(JVM Statistics Monitoring Tool)是用于监控虚拟机各种运行状态信息的命令行工具。可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,在没有GUI图形的服务器上,它是运行期定位虚拟机性能问题的首选工具。

  jstat位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。

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

  参数解释:

  Option — 选项,一般使用 -gcutil 查看gc情况

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

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

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

       参数interval和count代表查询间隔次数,如果省略这两个参数,说明只查询一次。假设需要每250毫秒查询一次进程5828垃圾收集状况,一共查询5次,那命令行如下:

jstat -gc 5828 250 5

  option

  主要分为3类:类装载、垃圾收集和运行期编译状况

class 监视类装载、卸载数量、总空间及类装载所耗费的时间
–gc 监视Java堆状况,包括Eden区、2个Survivor区、老年代、永久代等的容量
–gccapacity 监视内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大和最小空间
–gcutil 监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比
–gccause 与-gcutil功能一样,但是会额外输出导致上一次GC产生的原因
–gcnew 监视新生代GC的状况
–gcnewcapacity 监视内容与-gcnew基本相同,输出主要关注使用到的最大和最小空间
–gcold 监视老年代GC的状况 –gcoldcapacity 监视内容与——gcold基本相同,输出主要关注使用到的最大和最小空间
–gcpermcapacity 输出永久代使用到的最大和最小空间
–compiler 输出JIT编译器编译过的方法、耗时等信息
–printcompilation 输出已经被JIT编译的方法

       jstat –class<pid> : 显示加载class的数量,及所占空间等信息。

 

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

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

 

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

  jstat -gc <pid>: 可以显示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)

       jstat -gcnew <pid>:年轻代对象的信息

       jstat -gcnewcapacity<pid>: 年轻代对象的信息及其占用量。

       jstat -gcold <pid>:old代对象的信息。

      

posted on 2019-09-29 20:52  溪水静幽  阅读(317)  评论(0)    收藏  举报