Java基础系列3-JSTAT

官方文档地址

https://docs.oracle.com/javase/8/docs/technotes/tools/unix/toc.html

JSTAT

jstat用来进行jvm统计,常用来进行性能统计,其语法为:

1
2
3
jstat [ generalOption | outputOptions vmid [ interval [s | ms] [ count ]]

jstat [ 单个选项 | 其它选项 jvm标识符 [ 监控间隔 [s | ms] [ 监控次数 ]]

其中vmid语法如下:

1
2
3
4
[protocol:][//]lvmid[@hostname[:port]/servername]

[协议:][//]目标JVM的本地虚拟机标识符[@主机名
[:端口]/服务器名称]

一个最简单的例子如下

jstat -gc 16763 1000 10 #代表着每1秒查看一次16763进程的GC信息,一共查看10次

选项说明:

class: 该选项用于显示有关类加载器的统计,分别展示:

- Loaded加载类的数量;
- Bytes加载类的大小;
- Unloaded卸载类的数量;
- Bytes卸载类的大小;
- Time加载和卸载类一共消耗的时间;

compiler: 该选项用于显示HotSpot虚拟机编译的统计,分别展示:

- Compiled——编译任务数量; 
- Failed——编译失败数量; 
- Invalid——编译失效数量; 
- Time——编译耗时; 
- FailedType——最后一个编译失败的类型;
- FailedMethod——最后一个编译失败的方法和类型;

gc: 该选项用于显示GC的具体统计,分别展示:

- S0C——第一个survivor的容量;
- S1C——第二个survivor的容量;
- S0U——第一个survivor的使用容量;
- S1U——第二个survivor的使用容量;
- EC——年轻代Eden区容量;
- EU——年轻代Eden区使用容量;
- OC——老年代Old区容量;
- OU——老年代Old区使用容量;
- MC——元空间Metaspace区容量;
- MU——元空间Metaspace区使用容量;
- CCSC——压缩类空间容量;
- CCSU——压缩类空间使用容量;
- YGC——年轻代垃圾收集活动的次数; 
- YGCT——年轻代垃圾收集活动的时间;
- FGC——发生FullGC的次数;
- FGCT——发生FullGC的时间;
- GCT——发生垃圾收集的总时间;

gccapacity: 该选项用于显示内存空间的具体统计,分别展示:

- NGCMN——年轻代初始化大小(最小大小);
- NGCMX——年轻代最大大小;
- NGC——年轻代当前大小;
- S0C——第一个survivor区大小;
- S1C——第二个survivor区大小;
- EC——年轻代Eden区大小; 
- OGCMN——老年代Old区初始化容量(最小大小);
- OGCMX——老年代Old区最大大小;
- OGC——老年代Old区新生成的大小;
- OC——老年代Old区当前大小;
- MCMN——最小元空间大小;
- MCMX——最大元空间大小;  
- MC——当前元空间大小;
- CCSMN——压缩类空间最小容量;
- CCSMX——压缩类空间最大容量;
- CCSC——压缩类空间当前容量;
- YGC——年轻代GC次数;
- FGC——老年代GC次数;

gccause: 该选项用于最近一次GC的统计信息,分别展示:

- S0——第一个survivor区当前使用比率;
- S1——第二个survivor区当前使用比率;
- E——伊甸区当前使用比率;
- O——老年代当前使用比率;
- M——元空间当前使用比率;
- CCS——压缩类当前使用比率;
- YGC——年轻代GC次数;
- YGCT——年轻代垃圾收集时间;
- FGC——老年代GC次数;
- FGCT——老年代垃圾收集时间;
- GCT——垃圾收集总时间;
- LGCC——最后一次GC的原因;
- GCC——当前GC的原因

gcnew: 该选项用于年轻代GC的统计信息,分别展示:

- S0C——第一个survivor区大小;
- S1C——第二个survivor区大小;
- S0U——第一个survivor区使用率;
- S1U——第二个survivor区使用率;
- TT——对象存活次数;
- MTT——对象最大存货此时;
- DSS——期望Survivor区大小;
- EC——伊甸区大小;
- EU——伊甸区使用率;
- YGC——年轻代GC次数;
- YGCT——年轻代GC时间;

gcnewcapacity: 该选项用于年轻代空间的统计信息,分别展示:

- NGCMN——新生代最小空间大小;
- NGCMX——新生代最大空间大小;
- NGC——新生代当前空间大小;
- S0CMX——第一个Survivor区最大空间大小;
- S0C——第一个Survivor区当前空间大小;
- S1CMX——第二个Survivor区最大空间大小;
- S1C——第二个Survivor区当前空间大小;
- ECMX——伊甸区最大大小;
- EC——伊甸区当前大小;
- YGC——年轻代GC次数;
- FGC——年轻代GC时间;

gcold: 该选项用于老年代和元空间的空间的统计信息,分别展示:

- MC——元空间大小;
- MU——元空间使用大小;
- CCSC——压缩类大小;
- CCSU——压缩类使用大型;
- OC——当前老年代容量;
- OU——老年代使用容量;
- YGC——年轻代GC数量;
- FGC——fullGC数量;
- FGCT——fullGC时间;
- GCT ——GC总耗时;

gcoldcapacity:该选项用于老年代的空间的统计信息,分别展示:

- OGCMN——老年代最小大小;
- OGCMX——老年代最大大小;
- OGC——老年代当前增大小;
- OC——老年代当前大小;
- YGC——年轻代GC次数;
- FGC——老年代GC次数;
- FGCT——老年代GC总耗时;
- GCT——GC总耗时;

gcmetacapacity:该选项用于元空间的统计信息,分别展示:

- MCMN——元空间最小大小;
- MCMX——元空间最大大小;
- MC——元空间大小;
- CCSMN——压缩类空间最小大小;
- CCSMX——压缩类空间最大大小;
- CCSC——压缩类空间当前大小;
- YGC——年轻代GC次数;
- FGC——老年代GC次数;
- FGCT——老年代GC总耗时;
- GCT——GC总耗时;

gcutil: 该选项用于内存空间的统计信息,分别展示:

- S0——第一个survivor区当前使用比率;
- S1——第二个survivor区当前使用比率;
- E——伊甸区当前使用比率;
- O——老年代当前使用比率;
- M——元空间当前使用比率;
- CCS——压缩类当前使用比率;
- YGC——年轻代GC次数;
- YGCT——年轻代垃圾收集时间;
- FGC——老年代GC次数;
- FGCT——老年代垃圾收集时间;
- GCT——垃圾收集总时间;
- LGCC——最后一次GC的原因;
- GCC——当前GC的原因

printcompilation: 该选项用于方法编译的统计信息,分别展示:

- Compiled——最近进行编译方法的任务数量;
- Size——最近进行编译方法的任务大小;
- Type——最近进行编译方法的任务类型;
- Method——最近进行编译方法的任务类名和方法名;

其他参数

- -h+数字——用于批量的操作时候,可以每隔一段时间进行一次标题重新输出;
- -t——用于给结果加上一个时间戳;
- 远程连接参数——jstat -gcutil 40496@remote.domain 1000,只用这种指令进行远程服务器JVM监控;