jstat
是 JDK 提供的一个命令行工具,用于监视 Java 虚拟机(JVM)的各种统计信息。
jstat 位于 java 安装目录的 bin 目录下,主要利用 JVM 内建的指令对 java 应用程序的资源和性能进行实时的监控,包括对 JVM 内存中各种堆内存(Heap size)
和非堆内存(No heap size)
的大小及其内存使用量,以及垃圾回收状况
的监控。
jstat 语法格式:jstat <-命令选项> [-t] [-h
(<>
表示必填,[]
表示选填)
[root@d2d343b9bebc /]# jstat -help
Usage: jstat -help|-options
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
Definitions:
<option> An option reported by the -options option
<vmid> Virtual Machine Identifier. A vmid takes the following form:
<lvmid>[@<hostname>[:<port>]]
Where <lvmid> is the local vm identifier for the target
Java virtual machine, typically a process id; <hostname> is
the name of the host running the target Java virtual machine;
and <port> 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.
<lines> Number of samples between header lines.
<interval> Sampling interval. The following forms are allowed:
<n>["ms"|"s"]
Where <n> is an integer and the suffix specifies the units as
milliseconds("ms") or seconds("s"). The default units are "ms".
<count> Number of samples to take before terminating.
-J<flag> Pass <flag> directly to the runtime system.
其中,-option
可以从下面常用命令中选择。
为方便展示,以下截图均为 docker 容器中执行结果,容器中只启动了 springboot-demo-0.0.1-SNAPSHOT.jar
一个 java 程序,pid 为 1。
[root@d2d343b9bebc /]# jps
1 springboot-demo-0.0.1-SNAPSHOT.jar
58 Jps
注意:使用的jdk版本是jdk8。
执行结果:
[root@d2d343b9bebc /]# jstat -class 1
Loaded Bytes Unloaded Bytes Time
6146 11132.3 0 0.0 3.22
信息说明:
执行结果:
[root@d2d343b9bebc /]# jstat -compiler 1
Compiled Failed Invalid Time FailedType FailedMethod
3067 0 0 3.86 0
信息说明:
执行结果:
[root@d2d343b9bebc /]# jstat -gc 1
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
3584.0 2560.0 0.0 2528.0 104960.0 52927.3 19456.0 7163.8 30720.0 29147.5 4096.0 3769.9 11 0.047 1 0.038 0.085
信息说明:
执行结果:
[root@d2d343b9bebc /]# jstat -gccapacity 1
NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC
10240.0 163840.0 144384.0 3584.0 2560.0 104960.0 20480.0 327680.0 19456.0 19456.0 0.0 1075200.0 30720.0 0.0 1048576.0 4096.0 11 1
信息说明:
执行结果:
[root@d2d343b9bebc /]# jstat -gcmetacapacity 1
MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC FGCT GCT
0.0 1075200.0 30720.0 0.0 1048576.0 4096.0 11 1 0.038 0.085
信息说明:
执行结果:
[root@d2d343b9bebc /]# jstat -gcnew 1
S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
3584.0 2560.0 0.0 2528.0 1 15 3584.0 104960.0 52927.3 11 0.047
信息说明:
执行结果:
[root@d2d343b9bebc /]# jstat -gcnewcapacity 1
NGCMN NGCMX NGC S0CMX S0C S1CMX S1C ECMX EC YGC FGC
10240.0 163840.0 144384.0 54272.0 3584.0 54272.0 2560.0 162816.0 104960.0 11 1
信息说明:
执行结果:
[root@d2d343b9bebc /]# jstat -gcold 1
MC MU CCSC CCSU OC OU YGC FGC FGCT GCT
30720.0 29147.5 4096.0 3769.9 19456.0 7163.8 11 1 0.038 0.085
信息说明:
执行结果:
[root@d2d343b9bebc /]# jstat -gcoldcapacity 1
OGCMN OGCMX OGC OC YGC FGC FGCT GCT
20480.0 327680.0 19456.0 19456.0 11 1 0.038 0.085
信息说明:
执行结果:
[root@d2d343b9bebc /]# jstat -gcutil 1
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 98.75 50.43 36.82 94.88 92.04 11 0.047 1 0.038 0.085
信息说明:
执行结果:
[root@d2d343b9bebc /]# jstat -gccause 1
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT LGCC
GCC
0.00 98.75 52.76 36.82 94.88 92.04 11 0.047 1 0.038 0.085 Allocation Failure No GC
信息说明:
执行结果:
[root@d2d343b9bebc /]# jstat -printcompilation 1
Compiled Size Type Method
3110 48 1 java/util/concurrent/ConcurrentHashMap sumCount
信息说明:
与 jps
一样,jstat
也支持远程监控,同样需要开启安全授权,类似 jps。
C:\Users\Administrator>jps 192.168.146.128
3346 QuorumPeerMain
3475 Jstatd
C:\Users\Administrator>jstat -gcutil 3346@192.168.146.128
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
52.97 0.00 65.15 13.92 97.39 98.02 8 0.020 0 0.000 0.020
整理完毕,完结撒花~
参考地址:
1.jstat,https://baike.baidu.com/item/jstat/16207961
2.jstat命令详解[通俗易懂],https://cloud.tencent.com/developer/article/2131836
3.jvm 性能调优工具之 jstat 命令详解,https://blog.csdn.net/javalingyu/article/details/124800644