虚拟机的性能监控与故障处理——jps,jstat,jinfo,jmap,jhat,jstack

Java虚拟机实现了内存自动分配,垃圾回收机制,但是这一过程,究竟什么时候执行,执行到什么地步,却需要jdk提供的一些工具来监控。

比如jps,jstat,jinfo,jmap,jhat,jstack。

1,jps

首先看看jps,jps——java process status tool,也就是java进程状态工具,奥~,原来是看现在运行的java进程的状态的,jps也有点像linux的ps命令,那么如何使用呢?

jps  [option]

看例子吧

jps -m 这个命令就是查看机器上虚拟机进程启动时传递给main方法的参数。

jps -q 输出LVMID 省略主类。输出的就是pid

jps -l 输出主类的全名,如果是jar包,则输出jar路径。  

jps -v 这个是输出虚拟机进程启动时jvm的参数。

2,jstat

jstat,  java statistics monitoring tool  状态监视工具,可以显示虚拟机进程中的类加载,内存,垃圾回收,JIT即时编译等的运行数据。纯文本的展示。如何使用呢?

jstat [option] [pid/host_id] [interval (ms)] [count]

直接看例子,比如我们查到一个java进程的pid是7689,那么使用起来就是这样:

jstat -gc 7689 250 20  这句话就是查询这个进程的垃圾回收情况,每隔250ms查看一次,总共查询20次。

当然也可以不输入后面两个参数,这样就只统计一次。

S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT   
4544.0 4544.0  0.0    41.5  36864.0  17882.8   91472.0    70365.5   87424.0 84851.3 10112.0 9586.1    791    5.742   4      0.723    6.465

这是统计GC时的参数

S0C 是S0区域的capacity总容量,S1C是S1区域的capacity,S0U的U是used,已使用容量S0C:第一个幸存区的大小

  • S1C:第二个幸存区的大小
  • S0U:第一个幸存区的使用大小
  • S1U:第二个幸存区的使用大小
  • EC:伊甸园区的大小
  • EU:伊甸园区的使用大小
  • OC:老年代大小
  • OU:老年代使用大小
  • MC:方法区大小
  • MU:方法区使用大小
  • CCSC:压缩类空间大小
  • CCSU:压缩类空间使用大小
  • YGC:年轻代垃圾回收次数
  • YGCT:年轻代垃圾回收消耗时间
  • FGC:老年代垃圾回收次数
  • FGCT:老年代垃圾回收消耗时间
  • GCT:垃圾回收消耗总时间

option选项主要有下面这些

-class   监视类加载,卸载,总空间以及类装载耗费的时间

-gc      监视java堆情况,包括Eden区,两个survivor,老年代,永久代容量,已用空间,gc时间合计。

-gccapacity   类似-gc,主要关注java堆各个区域的最大和最小空间

-gcutil      类似-gc,但是主要输出已使用空间所占的百分比

-gccause   类似-gc,额外输出上一次gc的原因。

-gcnew    监视新生代

-gcnewcapacity  类似-gcnew,但主要关注新生代使用到的的最大和最小空间

-gcold     监视老年代

-gcoldcapacity  类似-gcold,但是主要关注老年代使用到的的最大和最小空间

-gcpermcapacity  输出永久代使用到的最大和最小空间

-compiler    输出JIT编译过得方法,耗时等信息

-printcompilation     输出已经被JIT编译过得方法。

3,jinfo  配置信息工具

-flag <name>         to print the value of the named VM flag 打印虚拟机参数
    -flag [+|-]<name>    to enable or disable the named VM flag  
    -flag <name>=<value> to set the named VM flag to the given value 设置jvm参数,注意堆栈大小不能变,不能设置
    -flags               to print VM flags   打印所有jvm参数
    -sysprops            to print Java system properties  打印此次启动java的所有系统参数
    <no option>          to print both of the above  不加option打印所有

    -h | -help           to print this help message

使用举例 jinfo -flags 20698  打印这个pid的所有jvm参数

4,jmap  jhat jstack用到的时候再写。
















猜你喜欢

转载自blog.csdn.net/doujinlong1/article/details/80491339