jstat.exe 监视虚拟机统计信息

jstat(JVM Statistics Monitoring Tool)是用于监视虚拟机各种运行状态信息的命令行工具,如:显示本地或者远程虚拟机进程中的类加载、内存、垃圾回收、JIT编译等运行时数据。

命令格式

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

参数说明:

  • option  命令选项,用户可以通过指定不同的选项值查询不同的虚拟机信息,主要分为3类:类装载、垃圾回收和运行期编译状况,更多选项见后续“命令选项

  • -t  在输出的每行结果前面添加时间戳字段 Timestamp

  • -h  对输出结果进行分组,每隔 line 行就输出一次头信息

  • -J<flag> 将 <flag> 直接传递给运行时系统。 

  • vmid  虚拟机进程ID。如果是本地虚拟机进程,VMID 与 LVMID 是一致的。如果是远程虚拟机进程,那么 VMID 的格式如下:[protocol:] [//] lvmid[@hostname[:port]/serverName]

  • interval  表示两次查询之间的间隔

  • count  表示执行查询的次数

注意:如果省略 interval 和 count 两个参数,则 jstat 命令只查询一次。例如:

C:\Users\Administrator>jstat -gcutil 6064 500 10
  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT
 99.28   0.00  69.61  43.40  93.03  84.44     12    0.104     2    0.147    0.251
 99.28   0.00  73.75  43.40  93.03  84.44     12    0.104     2    0.147    0.251
 99.28   0.00  73.75  43.40  93.03  84.44     12    0.104     2    0.147    0.251
 99.28   0.00  73.75  43.40  93.03  84.44     12    0.104     2    0.147    0.251
 99.28   0.00  73.75  43.40  93.03  84.44     12    0.104     2    0.147    0.251
 99.28   0.00  73.75  43.40  93.03  84.44     12    0.104     2    0.147    0.251
 99.28   0.00  73.75  43.40  93.03  84.44     12    0.104     2    0.147    0.251
 99.28   0.00  73.96  43.40  93.03  84.44     12    0.104     2    0.147    0.251
 99.28   0.00  73.96  43.40  93.03  84.44     12    0.104     2    0.147    0.251
 99.28   0.00  73.96  43.40  93.03  84.44     12    0.104     2    0.147    0.251

上面表示 jstat 命令将每隔 500 毫秒查询一次 6064 进程的垃圾回收情况,一共查询 10 次。

命令选项

  • -class  监视类装载、卸载数量、总空间及类装载所耗费的时间

  • -gc  监视 Java 堆状况,包括 Eden 区、2 个 survivor 区、老年代、永久代等的容量、已用空间、GC时间合计等信息

  • -gccapacity  监视内容与 -gc 基本相同,但输出主要关注 Java 堆各个区域使用到的最大和最小空间

  • -gcutil  监视内容与 -gc 基本相同,但输出主要关注已使用空间占总空间的百分比

  • -gccause  与 -gcutil 功能一样,但是会额外输出导致上一次 GC 产生的原因

  • -gcnew  监视新生代 GC 的情况

  • -gcnewcapacity  监视内容与 -gcnew 基本相同,输出主要关注使用到的最大和最小空间

  • -gcold  监视老年代 GC 的状况

  • -gcoldcapacity  监视内容与 -gcold 基本相同,输出主要关注使用到的最大和最小空间

  • -gcpermcapacity  (JDK8一下版本可用)输出永久代使用到的最大和最小空间

  • -gcmetacapacity  (JDK8版本后可用)在 JDK8 中废弃了 PermGen 永久代,添加了元空间(Metaspace),使用该参数输出元空间使用到的最大和最小空间

  • -compiler  输出 JIT 编译器编译过的方法、耗时等信息

  • -printcompilation  输出已经被 JIT 编译的方法

命令示例

(1)监视进程 ID 为 6064 的 Java 进程类装载、卸载数量、总空间及类装载所耗费的时间。如下:

C:\Users\Administrator>jstat -class 6064
Loaded  Bytes  Unloaded  Bytes     Time
  5387 11283.5        0     0.0      13.37

(2)

C:\Users\Administrator>jstat -gc 6064
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT
3584.0 4608.0 3558.2  0.0   38912.0  29878.6   32256.0    13999.8   34816.0 32390.8 5120.0 4323.1     12    0.104   2      0.147    0.251

(3)

C:\Users\Administrator>jstat -gccapacity 6064
 NGCMN    NGCMX     NGC     S0C   S1C       EC      OGCMN      OGCMX       OGC         OC       MCMN     MCMX      MC     CCSMN    CCSMX     CCSC    YGC    FGC
  8192.0  87040.0  48128.0 3584.0 4608.0  38912.0    16384.0   175104.0    32256.0    32256.0      0.0 1079296.0  34816.0      0.0 1048576.0   5120.0     12     2

(4)

C:\Users\Administrator>jstat -gcutil 6064
  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT
 99.28   0.00  75.17  43.40  93.03  84.44     12    0.104     2    0.147    0.251

(5)

C:\Users\Administrator>jstat -gccause 6064
  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT    LGCC                 GCC
 99.28   0.00  77.59  43.40  93.03  84.44     12    0.104     2    0.147    0.251 Allocation Failure   No GC

(6)

C:\Users\Administrator>jstat -gcnew 6064
 S0C    S1C    S0U    S1U   TT MTT  DSS      EC       EU     YGC     YGCT
3584.0 4608.0 3558.2    0.0  2  15 4608.0  38912.0  30429.1     12    0.104

(7)

C:\Users\Administrator>jstat -gcnewcapacity 6064
  NGCMN      NGCMX       NGC      S0CMX     S0C     S1CMX     S1C       ECMX        EC      YGC   FGC
    8192.0    87040.0    48128.0  28672.0   3584.0  28672.0   4608.0    86016.0    38912.0    12     2

(8)

C:\Users\Administrator>jstat -gcold 6064
   MC       MU      CCSC     CCSU       OC          OU       YGC    FGC    FGCT     GCT
 34816.0  32390.8   5120.0   4323.1     32256.0     13999.8     12     2    0.147    0.251

(9)

C:\Users\Administrator>jstat -gcoldcapacity 6064
   OGCMN       OGCMX        OGC         OC       YGC   FGC    FGCT     GCT
    16384.0    175104.0     32256.0     32256.0    12     2    0.147    0.251

(10)

C:\Users\Administrator>jstat -gcmetacapacity 6064
   MCMN       MCMX        MC       CCSMN      CCSMX       CCSC     YGC   FGC    FGCT     GCT
       0.0  1079296.0    34816.0        0.0  1048576.0     5120.0    12     2    0.147    0.251

(11)

C:\Users\Administrator>jstat -compiler 6064
Compiled Failed Invalid   Time   FailedType FailedMethod
    3401      0       0     5.94          0

(12)

C:\Users\Administrator>jstat -printcompilation 6064
Compiled  Size  Type Method
    3413     54    1 org/openide/util/RequestProcessor$TickTac cancelImpl
说说我的看法
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号