jstat(JVM Statistics Monitoring Tool)是用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,在没有GUI图形界面,只提供了纯文本控制台环境的服务器上,它将是运行期定位虚拟机性能问题的首选工具。
1.jstat命令格式为
jstat [option vmid [interval[s|ms]] [count]]
如果是本地虚拟机进程,VMID和LVMID是一致的,如果是远程虚拟机进程,那VMID的格式应当是:
[protocol:][//]lvmid[@hostname[:port]/servername]
参数interval和count代表查询间隔和次数,如果省略这两个参数,说明只查询一次。
选项option代表着用户希望查询的虚拟机信息,主要分为3类:类装载、垃圾收集、运行期编译状况;
2.选项-class监视类装载、卸载数量、总空间及类装载所耗费的时间
yaomingyangdeMacBook-Pro:~ yaomingyang$ jstat -class 685 2s 10
Loaded Bytes Unloaded Bytes Time
18573 38432.8 2 1.9 32.84
18573 38432.8 2 1.9 32.84
18573 38432.8 2 1.9 32.84
18573 38432.8 2 1.9 32.84
18573 38432.8 2 1.9 32.84
18573 38432.8 2 1.9 32.84
18573 38432.8 2 1.9 32.84
18573 38432.8 2 1.9 32.84
18573 38432.8 2 1.9 32.84
18573 38432.8 2 1.9 32.84
- loaded:类装载数量
- Bytes:装载类的空间字节大小
- Unloaded:卸载数量
- Bytes卸载空间字节大小
- Time:类装载所耗费的时间
3.选项-gc监视Java堆状况,包括Eden区、两个survivor区、老年代、永久代等的容量、已用空间、GC时间合计等信息
yaomingyangdeMacBook-Pro:~ yaomingyang$ jstat -gc 685 2s 10
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
117760.0 75776.0 0.0 75420.9 176640.0 142500.8 326144.0 215473.8 127320.0 114477.2 16984.0 13243.1 55 1.732 7 2.046 3.779
117760.0 75776.0 0.0 75420.9 176640.0 142500.8 326144.0 215473.8 127320.0 114477.2 16984.0 13243.1 55 1.732 7 2.046 3.779
117760.0 75776.0 0.0 75420.9 176640.0 142500.8 326144.0 215473.8 127320.0 114477.2 16984.0 13243.1 55 1.732 7 2.046 3.779
117760.0 75776.0 0.0 75420.9 176640.0 142500.8 326144.0 215473.8 127320.0 114477.2 16984.0 13243.1 55 1.732 7 2.046 3.779
117760.0 75776.0 0.0 75420.9 176640.0 142500.8 326144.0 215473.8 127320.0 114477.2 16984.0 13243.1 55 1.732 7 2.046 3.779
117760.0 75776.0 0.0 75420.9 176640.0 142500.8 326144.0 215473.8 127320.0 114477.2 16984.0 13243.1 55 1.732 7 2.046 3.779
117760.0 75776.0 0.0 75420.9 176640.0 142500.8 326144.0 215473.8 127320.0 114477.2 16984.0 13243.1 55 1.732 7 2.046 3.779
117760.0 75776.0 0.0 75420.9 176640.0 142500.8 326144.0 215473.8 127320.0 114477.2 16984.0 13243.1 55 1.732 7 2.046 3.779
117760.0 75776.0 0.0 75420.9 176640.0 142500.8 326144.0 215473.8 127320.0 114477.2 16984.0 13243.1 55 1.732 7 2.046 3.779
117760.0 75776.0 0.0 75420.9 176640.0 142500.8 326144.0 215473.8 127320.0 114477.2 16984.0 13243.1 55 1.732 7 2.046 3.779
- S0C:第一个survivor(幸存区)区大小
- S1C:第二个survivor(幸存区)区大小
- S0U:第一个survivor(幸存区)区使用大小
- S1U:第二个survivor(幸存区)区使用大小
- EC:Eden区大小
- EU:Eden区使用大小
- OC:老年代大小
- OU:老年代使用大小
- MC:方法区大小
- MU:方法区使用大小
- CCSC:压缩类空间大小
- CCSU:压缩类空间使用大小
- YGC:年轻代垃圾回收次数
- YGCT:年轻代垃圾回收消耗的时间
- FGC:老年代垃圾回收次数
- FGCT:老年代垃圾回收消耗的时间
- GCT:垃圾回收消耗的总时间
4.选项-gccapacity监视内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的 最大、最小空间
yaomingyangdeMacBook-Pro:~ yaomingyang$ jstat -gccapacity 685 2s 10
NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC
13312.0 409600.0 409600.0 117760.0 75776.0 176640.0 27648.0 819200.0 326144.0 326144.0 0.0 1159168.0 127320.0 0.0 1048576.0 16984.0 55 7
13312.0 409600.0 409600.0 117760.0 75776.0 176640.0 27648.0 819200.0 326144.0 326144.0 0.0 1159168.0 127320.0 0.0 1048576.0 16984.0 55 7
13312.0 409600.0 409600.0 117760.0 75776.0 176640.0 27648.0 819200.0 326144.0 326144.0 0.0 1159168.0 127320.0 0.0 1048576.0 16984.0 55 7
13312.0 409600.0 409600.0 117760.0 75776.0 176640.0 27648.0 819200.0 326144.0 326144.0 0.0 1159168.0 127320.0 0.0 1048576.0 16984.0 55 7
13312.0 409600.0 409600.0 117760.0 75776.0 176640.0 27648.0 819200.0 326144.0 326144.0 0.0 1159168.0 127320.0 0.0 1048576.0 16984.0 55 7
13312.0 409600.0 409600.0 117760.0 75776.0 176640.0 27648.0 819200.0 326144.0 326144.0 0.0 1159168.0 127320.0 0.0 1048576.0 16984.0 55 7
13312.0 409600.0 409600.0 117760.0 75776.0 176640.0 27648.0 819200.0 326144.0 326144.0 0.0 1159168.0 127320.0 0.0 1048576.0 16984.0 55 7
13312.0 409600.0 409600.0 117760.0 75776.0 176640.0 27648.0 819200.0 326144.0 326144.0 0.0 1159168.0 127320.0 0.0 1048576.0 16984.0 55 7
13312.0 409600.0 409600.0 117760.0 75776.0 176640.0 27648.0 819200.0 326144.0 326144.0 0.0 1159168.0 127320.0 0.0 1048576.0 16984.0 55 7
13312.0 409600.0 409600.0 117760.0 75776.0 176640.0 27648.0 819200.0 326144.0 326144.0 0.0 1159168.0 127320.0 0.0 1048576.0 16984.0 55 7
- NGCMN:新生代最小容量
- NGCMX:新生代最大容量
- NGC:当前新生代容量
- S0C:第一个survivor(幸存)区大小
- S1C:第二个survivor(幸存)区大小
- EC:Eden区的大小
- OGCMN:老年代最小容量
- OGCMX:老年代最大容量
- OGC:当前老年代大小
- OC:当前老年代大小
- MCMN:最小元数据容量
- MCMX:最大元数据容量
- MC:当前元数据大小
- CCSMN:最小压缩类空间大小
- CCSMX:最大压缩类空间大小
- CCSC:当前压缩类大小
- YGC:年轻代GC次数
- FGC:老年代GC次数
5.选项-gcutil监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比
yaomingyangdeMacBook-Pro:~ yaomingyang$ jstat -gcutil 685 2s 10
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 99.53 92.85 66.07 89.91 77.97 55 1.732 7 2.046 3.779
0.00 99.53 92.85 66.07 89.91 77.97 55 1.732 7 2.046 3.779
0.00 99.53 92.85 66.07 89.91 77.97 55 1.732 7 2.046 3.779
0.00 99.53 92.85 66.07 89.91 77.97 55 1.732 7 2.046 3.779
0.00 99.53 92.85 66.07 89.91 77.97 55 1.732 7 2.046 3.779
0.00 99.53 92.85 66.07 89.91 77.97 55 1.732 7 2.046 3.779
0.00 99.53 92.85 66.07 89.91 77.97 55 1.732 7 2.046 3.779
0.00 99.53 92.85 66.07 89.91 77.97 55 1.732 7 2.046 3.779
0.00 99.53 92.85 66.07 89.91 77.97 55 1.732 7 2.046 3.779
0.00 99.53 92.85 66.07 89.91 77.97 55 1.732 7 2.046 3.779
- S0:第一个survivor(幸存)区使用的比例
- S1:第二个survivor(幸存)区使用的比例
- E:Eden区使用的比例
- O:老年代使用的比例
- M:方法区使用的比例
- CCS:压缩类使用的比例
- YGC:新生代GC的次数
- YGCT:新生代GC的时间
- FGC:老年代GC的次数
- FGCT:老年代GC的时间
- GCT:GC的总耗时
6.选项-gccause与-gcutil功能一样,但是会额外输出导致上一次GC产生的原因
yaomingyangdeMacBook-Pro:~ yaomingyang$ jstat -gccause 685 2s 10
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT LGCC GCC
0.00 99.53 93.29 66.07 89.91 77.97 55 1.732 7 2.046 3.779 Allocation Failure No GC
0.00 99.53 93.29 66.07 89.91 77.97 55 1.732 7 2.046 3.779 Allocation Failure No GC
0.00 99.53 93.29 66.07 89.91 77.97 55 1.732 7 2.046 3.779 Allocation Failure No GC
0.00 99.53 93.29 66.07 89.91 77.97 55 1.732 7 2.046 3.779 Allocation Failure No GC
0.00 99.53 93.29 66.07 89.91 77.97 55 1.732 7 2.046 3.779 Allocation Failure No GC
0.00 99.53 93.29 66.07 89.91 77.97 55 1.732 7 2.046 3.779 Allocation Failure No GC
0.00 99.53 93.29 66.07 89.91 77.97 55 1.732 7 2.046 3.779 Allocation Failure No GC
0.00 99.53 93.29 66.07 89.91 77.97 55 1.732 7 2.046 3.779 Allocation Failure No GC
0.00 99.53 93.29 66.07 89.91 77.97 55 1.732 7 2.046 3.779 Allocation Failure No GC
0.00 99.53 93.29 66.07 89.91 77.97 55 1.732 7 2.046 3.779 Allocation Failure No GC
- LGCC:上次GC的原因
- GCC:当前GC的原因
7.选项-gcnew监视新生代GC状况
yaomingyangdeMacBook-Pro:~ yaomingyang$ jstat -gcnew 685 2s 10
S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
117760.0 75776.0 0.0 75420.9 15 15 117760.0 176640.0 165983.4 55 1.732
117760.0 75776.0 0.0 75420.9 15 15 117760.0 176640.0 165983.4 55 1.732
117760.0 75776.0 0.0 75420.9 15 15 117760.0 176640.0 165983.4 55 1.732
117760.0 75776.0 0.0 75420.9 15 15 117760.0 176640.0 165983.4 55 1.732
117760.0 75776.0 0.0 75420.9 15 15 117760.0 176640.0 165983.4 55 1.732
117760.0 75776.0 0.0 75420.9 15 15 117760.0 176640.0 165983.4 55 1.732
117760.0 75776.0 0.0 75420.9 15 15 117760.0 176640.0 165983.4 55 1.732
117760.0 75776.0 0.0 75420.9 15 15 117760.0 176640.0 165983.4 55 1.732
117760.0 75776.0 0.0 75420.9 15 15 117760.0 176640.0 165983.4 55 1.732
117760.0 75776.0 0.0 75420.9 15 15 117760.0 176640.0 165983.4 55 1.732
- S0C:第一个survivor(幸存)区大小
- S1C:第二个survivor(幸存)区大小
- S0U:第一个survivor(幸存)区已使用大小
- S1U:第二个survivor(幸存)区已使用大小
- TT:对象在新生代存货的次数
- MTT:对象在新生代存活的最大次数
- DSS:期望的幸存区大小
- EC:Eden区的大小
- EU:Eden区已使用的大小
- YGC:新生代GC次数
- YGCT:新生代GC消耗的时间
8.选项-gcnewcapacity监视内容与-gcnew基本相同,输出主要关注使用到的最大、最小空间
yaomingyangdeMacBook-Pro:~ yaomingyang$ jstat -gcnewcapacity 685 2s 10
NGCMN NGCMX NGC S0CMX S0C S1CMX S1C ECMX EC YGC FGC
13312.0 409600.0 409600.0 136192.0 117760.0 136192.0 114688.0 408576.0 177152.0 56 7
13312.0 409600.0 409600.0 136192.0 117760.0 136192.0 114688.0 408576.0 177152.0 56 7
13312.0 409600.0 409600.0 136192.0 117760.0 136192.0 114688.0 408576.0 177152.0 56 7
13312.0 409600.0 409600.0 136192.0 117760.0 136192.0 114688.0 408576.0 177152.0 56 7
13312.0 409600.0 409600.0 136192.0 117760.0 136192.0 114688.0 408576.0 177152.0 56 7
13312.0 409600.0 409600.0 136192.0 117760.0 136192.0 114688.0 408576.0 177152.0 56 7
13312.0 409600.0 409600.0 136192.0 117760.0 136192.0 114688.0 408576.0 177152.0 56 7
13312.0 409600.0 409600.0 136192.0 117760.0 136192.0 114688.0 408576.0 177152.0 56 7
13312.0 409600.0 409600.0 136192.0 117760.0 136192.0 114688.0 408576.0 177152.0 56 7
13312.0 409600.0 409600.0 136192.0 117760.0 136192.0 114688.0 408576.0 177152.0 56 7
- NGCMN:新生代最小容量
- NGCMX:新生代最大容量
- NGC:当前新生代容量
- S0CMX:第一个survivor(幸存)区最大容量
- S0C:第一个survivor(幸存)区当前容量
- S1CMX:第二个survivor(幸存)区最大容量
- S1C:第二个survivor(幸存)区当前容量
- ECMX:Eden区最大容量
- EC:Eden区当前容量
- YGC:新生代GC次数
- FGC:老年代GC次数
9.选项-gcold监视老年代GC状况
yaomingyangdeMacBook-Pro:~ yaomingyang$ jstat -gcold 685 2s 10
MC MU CCSC CCSU OC OU YGC FGC FGCT GCT
132056.0 118410.0 17624.0 13684.7 326144.0 215481.8 56 7 2.046 3.809
132056.0 118410.0 17624.0 13684.7 326144.0 215481.8 56 7 2.046 3.809
132056.0 118410.0 17624.0 13684.7 326144.0 215481.8 56 7 2.046 3.809
132056.0 118410.0 17624.0 13684.7 326144.0 215481.8 56 7 2.046 3.809
132056.0 118410.0 17624.0 13684.7 326144.0 215481.8 56 7 2.046 3.809
132056.0 118410.0 17624.0 13684.7 326144.0 215481.8 56 7 2.046 3.809
132056.0 118410.0 17624.0 13684.7 326144.0 215481.8 56 7 2.046 3.809
132056.0 118410.0 17624.0 13684.7 326144.0 215481.8 56 7 2.046 3.809
132056.0 118410.0 17624.0 13684.7 326144.0 215481.8 56 7 2.046 3.809
132056.0 118410.0 17624.0 13684.7 326144.0 215481.8 56 7 2.046 3.809
- MC:方法区大小
- MU:方法区使用大小
- CCSC:压缩类空间大小
- CCSU:压缩类空间使用大小
- OC:老年代大小
- OU:老年代使用大小
- YGC:新生代GC次数
- FGC:老年代GC次数
- FGCT:老年代GC消耗时间
- GCT:GC消耗总时间
10.选项-gcoldcapacity监视内容与-gcold基本相同,输出主要关注使用到的最大、最小空间
yaomingyangdeMacBook-Pro:~ yaomingyang$ jstat -gcoldcapacity 685 2s 10
OGCMN OGCMX OGC OC YGC FGC FGCT GCT
27648.0 819200.0 326144.0 326144.0 56 7 2.046 3.809
27648.0 819200.0 326144.0 326144.0 56 7 2.046 3.809
27648.0 819200.0 326144.0 326144.0 56 7 2.046 3.809
27648.0 819200.0 326144.0 326144.0 56 7 2.046 3.809
27648.0 819200.0 326144.0 326144.0 56 7 2.046 3.809
27648.0 819200.0 326144.0 326144.0 56 7 2.046 3.809
27648.0 819200.0 326144.0 326144.0 56 7 2.046 3.809
27648.0 819200.0 326144.0 326144.0 56 7 2.046 3.809
27648.0 819200.0 326144.0 326144.0 56 7 2.046 3.809
27648.0 819200.0 326144.0 326144.0 56 7 2.046 3.809
- OGCMN:老年代最小容量
- OGCMX:老年代最大容量
- OGC:当前老年代大小
- OC:老年代大小
- YGC:新生代GC次数
- FGC:老年代GC次数
- FGCT:老年代GC时间
- GCT:GC总耗时
11.选项-gcpermcapacity输出永久代使用到的最大、最小空间
yaomingyangdeMacBook-Pro:~ yaomingyang$ jstat -gcpermcapacity 685 2s 10
PGCMN PGCMX PGC PC YGC FGC FGCT GCT
� � � � 56 7 2.046 3.809
� � � � 56 7 2.046 3.809
� � � � 56 7 2.046 3.809
� � � � 56 7 2.046 3.809
� � � � 56 7 2.046 3.809
� � � � 56 7 2.046 3.809
� � � � 56 7 2.046 3.809
� � � � 56 7 2.046 3.809
� � � � 56 7 2.046 3.809
� � � � 56 7 2.046 3.809
- PGCMN:永久带最小容量
- PGCMX:永久带最大容量
- PGC:永久代当前容量
- PC:永久带容量
- YGC:新生代GC次数
- FGC:老年代GC次数
- FGCT:老年代GC时间
- GCT:GC总耗时
12.选项-compiler输出JIT编译器编译过的方法、耗时等信息
yaomingyangdeMacBook-Pro:~ yaomingyang$ jstat -compiler 685 2s 10
Compiled Failed Invalid Time FailedType FailedMethod
19589 5 0 117.44 1 org/aspectj/weaver/bcel/BcelClassWeaver match
19589 5 0 117.44 1 org/aspectj/weaver/bcel/BcelClassWeaver match
19589 5 0 117.44 1 org/aspectj/weaver/bcel/BcelClassWeaver match
19589 5 0 117.44 1 org/aspectj/weaver/bcel/BcelClassWeaver match
19589 5 0 117.44 1 org/aspectj/weaver/bcel/BcelClassWeaver match
19589 5 0 117.44 1 org/aspectj/weaver/bcel/BcelClassWeaver match
19589 5 0 117.44 1 org/aspectj/weaver/bcel/BcelClassWeaver match
19589 5 0 117.44 1 org/aspectj/weaver/bcel/BcelClassWeaver match
19589 5 0 117.44 1 org/aspectj/weaver/bcel/BcelClassWeaver match
19589 5 0 117.44 1 org/aspectj/weaver/bcel/BcelClassWeaver match
- Compiled:编译数量
- Failed:失败数量
- Invalid:不可用数量
- Time:时间
- FailedType:失败类型
- FailedMethod:失败方法
13.选项-printcompilation输出已经被JIT编译的方法
yaomingyangdeMacBook-Pro:~ yaomingyang$ jstat -printcompilation 685 2s 10
Compiled Size Type Method
19589 792 1 java/util/concurrent/ConcurrentHashMap replaceNode
19589 792 1 java/util/concurrent/ConcurrentHashMap replaceNode
19589 792 1 java/util/concurrent/ConcurrentHashMap replaceNode
19589 792 1 java/util/concurrent/ConcurrentHashMap replaceNode
19589 792 1 java/util/concurrent/ConcurrentHashMap replaceNode
19589 792 1 java/util/concurrent/ConcurrentHashMap replaceNode
19589 792 1 java/util/concurrent/ConcurrentHashMap replaceNode
19589 792 1 java/util/concurrent/ConcurrentHashMap replaceNode
19589 792 1 java/util/concurrent/ConcurrentHashMap replaceNode
19589 792 1 java/util/concurrent/ConcurrentHashMap replaceNode
- Compiled:最近编译方法的数量
- Size:最近编译字节码的数量
- Type:最近编译方法的编译类型
- Method:方法名标识