JAVA命令(五) : jstat
1、功能
jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。
2、位置
jstat 命令位于$JAVA_HOME/bin目录下
3、用法
命令的格式如下:
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
参数解释:
-Options 选项,我们一般使用 -gcutil 查看gc情况
-t 可以在打印的列加上Timestamp列,用于显示系统运行的时间
-h 可以在周期性数据数据的时候,可以在指定输出多少行以后输出一次表
vmid VM的进程号,即当前运行的java进程号
interval 间隔时间,单位为秒或者毫秒
count 打印次数,如果缺省则打印无数次
Options
- -class 用于查看类加载情况的统计,显示加载class的数量,及所占空间等信息
- -compiler 查看HotSpot中即时编译器编译情况的统计
- -gc 查看JVM中堆的垃圾收集情况的统计
- -gccapacity 显示各个代的容量以及使用情况
- -gccause 查看垃圾收集的统计情况(这个和-gcutil选项一样),如果有发生垃圾收集,它还会显示最后一次及当前正在发生垃圾收集的原因
- -gcmetacapacity 显示关于metaspace大小的统计信息。
- -gcnew 查看新生代垃圾收集的情况,new对象的信息
- -gcnewcapacity 用于查看新生代的存储容量情况,new对象的信息及其占用量
- -gcold 用于查看老生代及持久代发生GC的情况,old对象的信息
- -gcoldcapacity 用于查看老生代的容量,old对象的信息及其占用量
- -gcutil 查看新生代、老生代及持代垃圾收集的情况
- -printcompilation 当前VM执行的信息
3.1 类加载统计
jstat -class -t -h10 1626 1000
- Loaded:加载class的数量
- Bytes:所占用空间大小
- Unloaded:未加载数量
- Bytes:未加载占用空间
- Time:时间
3.2 编译统计
jstat -compiler -h10 1626 1000
- Compiled:编译数量
- Failed:失败数量
- Invalid:不可用数量
- Time:时间
- FailedType:失败类型
- FailedMethod:失败的方法
3.3 垃圾回收情况统计
jstat -gc -h10 1626 1000
- S0C:第一个幸存区的大小
- S1C:第二个幸存区的大小
- S0U:第一个幸存区的使用大小
- S1U:第二个幸存区的使用大小
- EC:伊甸园区的大小
- EU:伊甸园区的使用大小
- OC:老年代大小
- OU:老年代使用大小
- MC:方法区大小
- MU:方法区使用大小
- CCSC:压缩类空间大小
- CCSU:压缩类空间使用大小
- YGC:Young GC 的次数
- YGCT:Young GC 所用的时间(单位秒)
- FGC:发生 Full GC 的次数
- FGCT:Full GC 所用的时间(单位秒)
- GCT:垃圾回收的总时间(单位秒)
3.4 堆内存统计
jstat -gccapacity -h10 1626 1000
![](https://img2022.cnblogs.com/blog/1322321/202202/1322321-20220228223309134-1777184057.png)
- NGCMN:新生代最小容量
- NGCMX:新生代最大容量
- NGC:当前新生代容量
- S0C:第一个幸存区大小
- S1C:第二个幸存区的大小
- EC:伊甸园区的大小
- OGCMN:老年代最小容量
- OGCMX:老年代最大容量
- OGC:当前老年代大小
- OC:当前老年代大小
- MCMN:最小元数据容量
- MCMX:最大元数据容量
- MC:当前元数据空间大小
- CCSMN:最小压缩类空间大小
- CCSMX:最大压缩类空间大小
- CCSC:当前压缩类空间大小
- YGC:Young GC 的次数
- FGC:发生 Full GC 的次数
jstat -gcnew -h10 1626 1000
![](https://img2022.cnblogs.com/blog/1322321/202202/1322321-20220228224254359-1016080418.png)
- S0C:第一个幸存区大小
- S1C:第二个幸存区的大小
- S0U:第一个幸存区的使用大小
- S1U:第二个幸存区的使用大小
- TT:对象在新生代存活的次数
- MTT:对象在新生代存活的最大次数
- DSS:期望的幸存区大小
- EC:伊甸园区的大小
- EU:伊甸园区的使用大小
- YGC:Young GC 的次数
- YGCT:Young GC 所用的时间(单位秒)
jstat -gcnewcapacity -h10 1626 1000
![](https://img2022.cnblogs.com/blog/1322321/202202/1322321-20220228224547540-930440909.png)
- NGCMN:新生代最小容量
- NGCMX:新生代最大容量
- NGC:当前新生代容量
- S0CMX:最大幸存1区大小
- S0C:当前幸存1区大小
- S1CMX:最大幸存2区大小
- S1C:当前幸存2区大小
- ECMX:最大伊甸园区大小
- EC:当前伊甸园区大小
- YGC:Young GC 的次数
- FGC:发生 Full GC 的次数
jstat -gcold -h10 1626 1000
![](https://img2022.cnblogs.com/blog/1322321/202202/1322321-20220228225253891-1068664110.png)
- MC:方法区大小
- MU:方法区使用大小
- CCSC:压缩类空间大小
- CCSU:压缩类空间使用大小
- OC:老年代大小
- OU:老年代使用大小
- YGC:Young GC 的次数
- FGC:发生 Full GC 的次数
- FGCT:Full GC 所用的时间(单位秒)
- GCT:垃圾回收的总时间(单位秒)
3.8 老年代内存统计
jstat -gcoldcapacity -h10 1626 1000
![](https://img2022.cnblogs.com/blog/1322321/202202/1322321-20220228225528827-1606021998.png)
- OGCMN:老年代最小容量
- OGCMX:老年代最大容量
- OGC:当前老年代大小
- OC:老年代大小
- YGC:Young GC 的次数
- FGC:发生 Full GC 的次数
- FGCT:Full GC 所用的时间(单位秒)
- GCT:垃圾回收的总时间(单位秒)
3.9 垃圾回收占比情况统计
jstat -gcutil -h10 1626 1000
![](https://img2022.cnblogs.com/blog/1322321/202202/1322321-20220228225704956-350695145.png)
- S0:幸存1区当前使用比例
- S1:幸存2区当前使用比例
- E:伊甸园区使用比例
- O:老年代使用比例
- M:元数据区使用比例
- CCS:压缩使用比例
- YGC:Young GC 的次数
- YGCT:Young GC 所用的时间(单位秒)
- FGC:发生 Full GC 的次数
- FGCT:Full GC 所用的时间(单位秒)
- GCT:垃圾回收的总时间(单位秒)
3.10 元数据空间使用统计
jstat -gcmetacapacity -h10 1626 1000
- MCMN: 最小元数据容量
- MCMX:最大元数据容量
- MC:当前元数据空间大小
- CCSMN:最小压缩类空间大小
- CCSMX:最大压缩类空间大小
- CCSC:当前压缩类空间大小
- YGC:Young GC 的次数
- FGC:发生 Full GC 的次数
- FGCT:Full GC 所用的时间(单位秒)
- GCT:垃圾回收的总时间(单位秒)
3.11 jvm编译方法统计
jstat -printcompilation -h10 1626 1000
![](https://img2022.cnblogs.com/blog/1322321/202202/1322321-20220228230234567-1073037277.png)
- Compiled:最近编译方法的数量
- Size:最近编译方法的字节码数量
- Type:最近编译方法的编译类型
- Method:方法名标识
4 参考
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html