jstat是jdk自带的一个小工具,位于${JAVA_HOME}的bin目录下,用于查看JVM中的各项监控数据,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对堆栈、GC等的监控。可见,jstat是非常轻量级的、专门针对JVM的工具。
0. 使用jstat -options查看当前JVM支持的选项

说明:
| 命令名称 |
说明 |
-class |
显示类加载器相关信息 |
-compiler |
显示JIT编译的相关信息 |
-gc |
显示堆的gc状态信息 |
--gccapacity |
显示各个代的容量以及使用情况 |
-gccause |
显示垃圾回收的相关信息,同时显示最后一次或当前正在发生的垃圾回收的诱因 |
-gcmetacapacity |
显示metaspace的大小 |
-gcnew |
显示新生代gc统计 |
-gcnewcapacity |
显示新生代大小和使用情况 |
-gcold |
显示老年代和永久代的信息 |
-gcoldcapacity |
显示老区大小 |
-gcutil |
GC统计汇总,显示垃圾收集信息 |
-printcompilation |
HotSpot编译统计 |
1. -class使用示例

| 参数 |
说明 |
| Loaded |
已经装载的类的数量 |
| Bytes |
装载类所占用的字节数 |
| Unloaded |
已经卸载类的数量 |
| Bytes |
卸载类的字节数 |
| Time |
装载和卸载类所花费的时间 |
2. -compiler使用示例

| 参数 |
说明 |
| Compiled |
编译任务执行数量 |
| Failed |
编译任务执行失败数量 |
| Invalid |
编译任务执行失效数量 |
| Time |
编译任务消耗时间 |
| FailedType |
最后一个编译失败任务的类型 |
| FailedMethod |
最后一个编译失败任务所在的类及方法 |
3. -gc使用示例

| 参数 |
说明 |
| S0C |
年轻代中第一个survivor(幸存区)的容量 (字节) |
| S1C |
年轻代中第二个survivor(幸存区)的容量 (字节) |
| S0U |
年轻代中第一个survivor(幸存区)目前已使用空间 (字节) |
| S1U |
年轻代中第二个survivor(幸存区)目前已使用空间 (字节) |
| EC |
年轻代中Eden(伊甸园)的容量 (字节) |
| EU |
年轻代中Eden(伊甸园)目前已使用空间 (字节) |
| OC |
Old代的容量 (字节) |
| OU |
Old代目前已使用空间 (字节) |
| MC |
metaspace(元空间)的容量 (字节) |
| MU |
metaspace(元空间)目前已使用空间 (字节) |
| CCSC |
压缩类空间大小 |
| CCSU |
压缩类空间使用大小 |
| YGC |
从应用程序启动到采样时年轻代中gc次数 |
| YGCT |
从应用程序启动到采样时年轻代中gc所用时间(s) |
| FGC |
从应用程序启动到采样时old代(全局gc)gc次数 |
| FGCT |
从应用程序启动到采样时old代(全局gc)gc所用时间(s) |
| GCT |
从应用程序启动到采样时gc用的总时间(s) |
4. -gccapacity使用示例

| 参数 |
说明 |
| NGCMN |
年轻代(young)中初始化(最小)的大小(字节) |
| NGCMX |
年轻代(young)的最大容量 (字节) |
| NGC |
年轻代(young)中当前的容量 (字节) |
| S0C |
年轻代中第一个survivor(幸存区)的容量 (字节) |
| S1C |
年轻代中第二个survivor(幸存区)的容量 (字节 |
| EC |
年轻代中Eden(伊甸园)的容量 (字节 |
| OGCMN |
old代中初始化(最小)的大小 (字节) |
| OGCMX |
old代的最大容量(字节) |
| OGC |
old代当前新生成的容量 (字节) |
| OC |
Old代的容量 (字节) |
| MCMN |
metaspace(元空间)中初始化(最小)的大小 (字节) |
| MCMX |
metaspace(元空间)的最大容量 (字节) |
| MC |
metaspace(元空间)当前新生成的容量 (字节) |
| CCSMN |
最小压缩类空间大小 |
| CCSMX |
最大压缩类空间大小 |
| CCSC |
当前压缩类空间大小 |
| YGC |
从应用程序启动到采样时年轻代中gc次数 |
| FGC |
从应用程序启动到采样时old代(全gc)gc次数 |
5. -gccause使用示例

| 参数 |
说明 |
| S0 |
Heap上的 Survivor space 0 区已使用空间的百分比 |
| S1 |
Heap上的 Survivor space 1 区已使用空间的百分比 |
| E |
Heap上的 Eden space 区已使用空间的百分比 |
| O |
Heap上的 Old space 区已使用空间的百分 |
| M |
|
| CCS |
|
| YGC |
从应用程序启动到采样时年轻代中gc次数 |
| YGCT |
从应用程序启动到采样时 Young GC 所用的时间(单位秒) |
| FGC |
从应用程序启动到采样时old代(全gc)gc次数 |
| FGCT |
从应用程序启动到采样时old代(全gc)gc所用时间(单位秒) |
| GCT |
从应用程序启动到采样时gc用的总时间(单位秒) |
| LGCC |
最后一次GC原因 |
| GCC |
当前GC原因(No GC 为当前没有执行GC) |
6. -gcmetacapacity使用示例

| 参数 |
说明 |
| MCMN |
最小元数据容量 |
| MCMX |
最大元数据容量 |
| MC |
当前元数据空间大小 |
| CCSMN |
最小压缩类空间大小 |
| CCSMX |
最大压缩类空间大小 |
| CCSC |
当前压缩类空间大小 |
| YGC |
从应用程序启动到采样时年轻代中gc次数 |
| FGC |
从应用程序启动到采样时old代(全gc)gc次数 |
| FGCT |
从应用程序启动到采样时old代(全gc)gc所用时间(s) |
| GCT |
从应用程序启动到采样时gc用的总时间(s) |
7. -gcnew使用示例

| 参数 |
说明 |
| S0C |
年轻代中第一个survivor(幸存区)的容量 (字节) |
| S1C |
年轻代中第二个survivor(幸存区)的容量 (字节) |
| S0U |
年轻代中第一个survivor(幸存区)目前已使用空间 (字节) |
| S1U |
年轻代中第二个survivor(幸存区)目前已使用空间 (字节) |
| TT |
持有次数限制 |
| MTT |
最大持有次数限制 |
| DSS |
期望的幸存区大小 |
| EC |
年轻代中Eden(伊甸园)的容量 (字节) |
| EU |
年轻代中Eden(伊甸园)目前已使用空间 (字节) |
| YGC |
从应用程序启动到采样时年轻代中gc次数 |
| YGCT |
从应用程序启动到采样时年轻代中gc所用时间(s) |
8. -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次数 |
9. -gcold使用示例

| 参数 |
说明 |
| MC |
metaspace(元空间)的容量 (字节) |
| MU |
metaspace(元空间)目前已使用空间 (字节) |
| CCSC |
压缩类空间大小 |
| CCSU |
压缩类空间使用大小 |
| OC |
Old代的容量 (字节) |
| OU |
Old代目前已使用空间 (字节) |
| YGC |
从应用程序启动到采样时年轻代中gc次数 |
| FGC |
从应用程序启动到采样时old代(全gc)gc次数 |
| FGCT |
从应用程序启动到采样时old代(全gc)gc所用时间(s) |
| GCT |
从应用程序启动到采样时gc用的总时间(s) |
10. -gcoldcapacity使用示例

| 参数 |
说明 |
| OGCMN |
old代中初始化(最小)的大小 (字节) |
| OGCMX |
old代的最大容量(字节) |
| OGC |
old代当前新生成的容量 (字节) |
| OC |
Old代的容量 (字节) |
| YGC |
从应用程序启动到采样时年轻代中gc次数 |
| FGC |
从应用程序启动到采样时old代(全gc)gc次数 |
| FGCT |
从应用程序启动到采样时old代(全gc)gc所用时间(s) |
| GCT |
从应用程序启动到采样时gc用的总时间(s) |
11. -gcutil使用示例

| 参数 |
说明 |
| S0 |
年轻代中第一个survivor(幸存区)已使用的占当前容量百分比 |
| S1 |
年轻代中第二个survivor(幸存区)已使用的占当前容量百分比 |
| E |
年轻代中Eden(伊甸园)已使用的占当前容量百分比 |
| O |
old代已使用的占当前容量百分比 |
| P |
perm代已使用的占当前容量百分比 |
| YGC |
从应用程序启动到采样时年轻代中gc次数 |
| YGCT |
从应用程序启动到采样时年轻代中gc所用时间(s) |
| FGC |
从应用程序启动到采样时old代(全gc)gc次数 |
| FGCT |
从应用程序启动到采样时old代(全gc)gc所用时间(s) |
| GCT |
从应用程序启动到采样时gc用的总时间(s) |
12. -printcompilation使用示例

| 参数 |
说明 |
| Compiled |
编译任务的数目 |
| Size |
方法生成的字节码的大小 |
| Type |
编译类型 |
| Method |
类名和方法名用来标识编译的方法。类名使用/做为一个命名空间分隔符。方法名是给定类中的方法。上述格式是由-XX:+PrintComplation选项进行设置的 |
相关文章: