java jstat gcutil_JVM命令之jstat深入讲解

JVM命令使用演示 这篇文章里演示了一些jvm命令的使用,跟着这个主题,写了:JVM命令之jstack深入讲解 和 JVM命令之jmap深入讲解 ,今天接着这条线具体介绍一下jstat命令的使用。

作用

JVM statistics Monitoring,用于监视虚拟机运行时状态信息的命令,它可以显示出虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。

使用

依旧先看一下使用帮助~  ᐅ jstat -help

Usage: jstat -help|-options

jstat - [-t] [-h] [ []]

Definitions:

      An option reported by the -options option

        Virtual Machine Identifier. A vmid takes the following form:

[@[:]]

Where is the local vm identifier for the target

Java virtual machine, typically a process id; is

the name of the host running the target Java virtual machine;

and is the port number for the rmiregistry on the

target host. See the jvmstat documentation for a more complete

description of the Virtual Machine Identifier.

       Number of samples between header lines.

    Sampling interval. The following forms are allowed:

["ms"|"s"]

Where is an integer and the suffix specifies the units as

milliseconds("ms") or seconds("s"). The default units are "ms".

       Number of samples to take before terminating.

-J      Pass directly to the runtime system.

这里首先介绍一下 jstat - pid 后面跟0、1、2个参数的差别,举例说明:~  ᐅ jps

30054 Jps

29529 Launcher

28953

29530 SearchBusiestCPU

29295 RemoteMavenServer

~  ᐅ jstat -gcutil 29530   # 0个参数的时候直接输出一次当前情况

S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT

0.00   0.00  20.59   0.00  17.27  19.75      0    0.000     0    0.000    0.000

~  ᐅ jstat -gcutil 29530 1000 # 1个参数时这个参数代表间隔时间,一直输出

S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT

0.00   0.00  20.59   0.00  17.27  19.75      0    0.000     0    0.000    0.000

0.00   0.00  20.59   0.00  17.27  19.75      0    0.000     0    0.000    0.000

0.00   0.00  20.59   0.00  17.27  19.75      0    0.000     0    0.000    0.000

0.00   0.00  20.59   0.00  17.27  19.75      0    0.000     0    0.000    0.000

^C%                                                                                                                       ~  ᐅ jstat -gcutil 29530 1000 2 # 2个参数时第一个参数参数代表间隔时间,后一个参数代表输出的总次数

S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT

0.00   0.00  20.59   0.00  17.27  19.75      0    0.000     0    0.000    0.000

0.00   0.00  20.59   0.00  17.27  19.75      0    0.000     0    0.000    0.000

当然也支持-t,-h,直接看一下效果即可,不是特别的重要:~  ᐅ jstat -gcutil -t -h5 29530 1000

Timestamp         S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT

428.5   0.00   0.00  20.59   0.00  17.27  19.75      0    0.000     0    0.000    0.000

429.5   0.00   0.00  20.59   0.00  17.27  19.75      0    0.000     0    0.000    0.000

430.5   0.00   0.00  20.59   0.00  17.27  19.75      0    0.000     0    0.000    0.000

431.5   0.00   0.00  20.59   0.00  17.27  19.75      0    0.000     0    0.000    0.000

432.5   0.00   0.00  20.59   0.00  17.27  19.75      0    0.000     0    0.000    0.000

Timestamp         S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT

433.5   0.00   0.00  20.59   0.00  17.27  19.75      0    0.000     0    0.000    0.000

434.5   0.00   0.00  20.59   0.00  17.27  19.75      0    0.000     0    0.000    0.000

435.5   0.00   0.00  20.59   0.00  17.27  19.75      0    0.000     0    0.000    0.000

436.5   0.00   0.00  20.59   0.00  17.27  19.75      0    0.000     0    0.000    0.000

437.5   0.00   0.00  20.59   0.00  17.27  19.75      0    0.000     0    0.000    0.000

Timestamp         S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT

438.5   0.00   0.00  20.59   0.00  17.27  19.75      0    0.000     0    0.000    0.000

439.5   0.00   0.00  20.59   0.00  17.27  19.75      0    0.000     0    0.000    0.000

不同参数详细解释

jstat -options

可以列出当前JVM版本支持的选项,常见的有

l  class (类加载器)

l  compiler (JIT)

l  gc (GC堆状态)

l  gccapacity (各区大小)

l  gccause (最近一次GC统计和原因)

l  gcnew (新区统计)

l  gcnewcapacity (新区大小)

l  gcold (老区统计)

l  gcoldcapacity (老区大小)

l  gcpermcapacity (永久区大小)

l  gcutil (GC统计汇总)

l  printcompilation (HotSpot编译统计)

1、jstat –class : 显示加载class的数量,及所占空间等信息。显示列名具体描述

Loaded装载的类的数量

Bytes装载类所占用的字节数

Unloaded卸载类的数量

Bytes卸载类的字节数

Time装载和卸载类所花费的时间

2、jstat -compiler :显示VM实时编译的数量等信息。显示列名具体描述

Compiled编译任务执行数量

Failed编译任务执行失败数量

Invalid编译任务执行失效数量

Time编译任务消耗时间

FailedType最后一个编译失败任务的类型

FailedMethod最后一个编译失败任务所在的类及方法

3、jstat -gc : 可以显示gc的信息,查看gc的次数,及时间。

不同的版本有一定的差别,比如jdk8之后会有MC、MU等,代表Metaspace的容量(C)和已使用空间(U),下面其他参数也有相同的问题,注意识别对应的后缀即可。显示列名具体描述

S0C年轻代中第一个survivor(幸存区)的容量 (字节)

S1C年轻代中第二个survivor(幸存区)的容量 (字节)

S0U年轻代中第一个survivor(幸存区)目前已使用空间 (字节)

S1U年轻代中第二个survivor(幸存区)目前已使用空间 (字节)

EC年轻代中Eden(伊甸园)的容量 (字节)

EU年轻代中Eden(伊甸园)目前已使用空间 (字节)

OCOld代的容量 (字节)

OUOld代目前已使用空间 (字节)

PCPerm(持久代)的容量 (字节)

PUPerm(持久代)目前已使用空间 (字节)

YGC从应用程序启动到采样时年轻代中gc次数

YGCT从应用程序启动到采样时年轻代中gc所用时间(s)

FGC从应用程序启动到采样时old代(全gc)gc次数

FGCT从应用程序启动到采样时old代(全gc)gc所用时间(s)

GCT从应用程序启动到采样时gc用的总时间(s)

4、jstat -gccapacity :可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小显示列名具体描述

NGCMN年轻代(young)中初始化(最小)的大小(字节)

NGCMX年轻代(young)的最大容量 (字节)

NGC年轻代(young)中当前的容量 (字节)

S0C年轻代中第一个survivor(幸存区)的容量 (字节)

S1C年轻代中第二个survivor(幸存区)的容量 (字节)

EC年轻代中Eden(伊甸园)的容量 (字节)

OGCMNold代中初始化(最小)的大小 (字节)

OGCMXold代的最大容量(字节)

OGCold代当前新生成的容量 (字节)

OCOld代的容量 (字节)

PGCMNperm代中初始化(最小)的大小 (字节)

PGCMXperm代的最大容量 (字节)

PGCperm代当前新生成的容量 (字节)

PCPerm(持久代)的容量 (字节)

YGC从应用程序启动到采样时年轻代中gc次数

FGC从应用程序启动到采样时old代(全gc)gc次数

5、jstat -gcutil :统计gc信息显示列名具体描述

S0年轻代中第一个survivor(幸存区)已使用的占当前容量百分比

S1年轻代中第二个survivor(幸存区)已使用的占当前容量百分比

E年轻代中Eden(伊甸园)已使用的占当前容量百分比

Oold代已使用的占当前容量百分比

Pperm代已使用的占当前容量百分比

YGC从应用程序启动到采样时年轻代中gc次数

YGCT从应用程序启动到采样时年轻代中gc所用时间(s)

FGC从应用程序启动到采样时old代(全gc)gc次数

FGCT从应用程序启动到采样时old代(全gc)gc所用时间(s)

GCT从应用程序启动到采样时gc用的总时间(s)

6、jstat -gcnew :年轻代对象的信息。显示列名具体描述

S0C年轻代中第一个survivor(幸存区)的容量 (字节)

S1C年轻代中第二个survivor(幸存区)的容量 (字节)

S0U年轻代中第一个survivor(幸存区)目前已使用空间 (字节)

S1U年轻代中第二个survivor(幸存区)目前已使用空间 (字节)

TT持有次数限制

MTT最大持有次数限制

EC年轻代中Eden(伊甸园)的容量 (字节)

EU年轻代中Eden(伊甸园)目前已使用空间 (字节)

YGC从应用程序启动到采样时年轻代中gc次数

YGCT从应用程序启动到采样时年轻代中gc所用时间(s)

7、jstat -gcnewcapacity : 年轻代对象的信息及其占用量。显示列名具体描述

NGCMN年轻代(young)中初始化(最小)的大小(字节)

NGCMX年轻代(young)的最大容量 (字节)

NGC年轻代(young)中当前的容量 (字节)

S0CMX年轻代中第一个survivor(幸存区)的最大容量 (字节)

S0C年轻代中第一个survivor(幸存区)的容量 (字节)

S1CMX年轻代中第二个survivor(幸存区)的最大容量 (字节)

S1C年轻代中第二个survivor(幸存区)的容量 (字节)

ECMX年轻代中Eden(伊甸园)的最大容量 (字节)

EC年轻代中Eden(伊甸园)的容量 (字节)

YGC从应用程序启动到采样时年轻代中gc次数

FGC从应用程序启动到采样时old代(全gc)gc次数

8、jstat -gcold :old代对象的信息。显示列名具体描述

PCPerm(持久代)的容量 (字节)

PUPerm(持久代)目前已使用空间 (字节)

OCOld代的容量 (字节)

OUOld代目前已使用空间 (字节)

YGC从应用程序启动到采样时年轻代中gc次数

FGC从应用程序启动到采样时old代(全gc)gc次数

FGCT从应用程序启动到采样时old代(全gc)gc所用时间(s)

GCT从应用程序启动到采样时gc用的总时间(s)

9、jstat -gcoldcapacity :old代对象的信息及其占用量。显示列名具体描述

OGCMNold代中初始化(最小)的大小 (字节)

OGCMXold代的最大容量(字节)

OGCold代当前新生成的容量 (字节)

OCOld代的容量 (字节)

YGC从应用程序启动到采样时年轻代中gc次数

FGC从应用程序启动到采样时old代(全gc)gc次数

FGCT从应用程序启动到采样时old代(全gc)gc所用时间(s)

GCT从应用程序启动到采样时gc用的总时间(s)

10、jstat -gcpermcapacity: perm对象的信息及其占用量。显示列名具体描述

PGCMNperm代中初始化(最小)的大小 (字节)

PGCMXperm代的最大容量 (字节)

PGCperm代当前新生成的容量 (字节)

PCPerm(持久代)的容量 (字节)

YGC从应用程序启动到采样时年轻代中gc次数

FGC从应用程序启动到采样时old代(全gc)gc次数

FGCT从应用程序启动到采样时old代(全gc)gc所用时间(s)

GCT从应用程序启动到采样时gc用的总时间(s)

11、jstat -printcompilation :当前VM执行的信息。显示列名具体描述

Compiled编译任务的数目

Size方法生成的字节码的大小

Type编译类型

Method类名和方法名用来标识编译的方法。类名使用/做为一个命名空间分隔符。方法名是给定类中的方法。上述格式是由-XX:+PrintComplation选项进行设置的

关于jstat就主要介绍到这里,这个命令相对容易一些,关键是对结果的解读。这些结果也不需要刻意去背,能清楚的理解分代,找到缩写规律,自己单独看也是很容易的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值