jstat虚拟机统计信息监控工具
1、jstat(JVM Statistics Monitorning Tool)
用于监控虚拟机各种运行状态信息的命令行工具。
它可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,它是运行期定位虚拟机
性能问题的首选工具。
jstat命令中的参数 interval 和 count 代表查询间隔和次数,如果省略这两个参数,说明只查询一次。假设需要
每250毫秒查询一次进程2764垃圾收集的情况,一共查询20次,那么命令应该是:jstat -gc 2764 250 20
2、主要选项
| 选项 | 作用 |
|---|---|
| -class | 监视类装载、卸载数量、总空间及类装载所耗费的时间 |
| -gc | 监视Java堆状况,包括Eden区、2个Survivor区、老年代、永久代等容量、已用空间、GC合计时间等信息 |
| -gccapacity | 监视内容与-gc基本相同,但输出主要关注java堆各区域使用到的最大和最小空间 |
| -gcutil | 监控内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比 |
| -gccause | 与-gcutil功能一样,但是会额外输出导致上一次GC产生的原因 |
| -gcnew | 监视新生代GC的状况 |
| -gcnewcapacity | 监视内容与-gcnew基本相同,输出主要关注使用到的最大和最小空间 |
| -gcold | 监视老年代GC的状况 |
| -gcoldcapacity | 监视内容与-gcold基本相同,输出主要关注使用到的最大和最小空间 |
| -gcmetacapacity | 输出永久代使用到的最大和最小空间 |
| -compiler | 输出JIT编译器编译过的方法、耗时等信息 |
| -printcompilation | 输出已被JIT编译的方法 |
2.1 统计加载类的信息
命令:jstat -class pid


| 列名 | 说明 |
|---|---|
| Loaded | 装载的类的数量 |
| Bytes | 装载类所占用的字节数 |
| Unloaded | 卸载类的数量 |
| Bytes | 卸载类所占用的字节数 |
| Time | 装载类和卸载类所耗费的时间(毫秒) |
2.2 编译统计
命令:jstat -compiler pid

| 列名 | 说明 |
|---|---|
| Compiled | 编译任务执行数量 |
| Failed | 编译任务执行失败的数量 |
| Invalid | 编译任务失效的数量 |
| Time | 编译总耗时(毫秒) |
| FailedType | 最后一个编译失败任务的类型 |
| FailedMethod | 最后一个编译失败任务所在的类及方法 |
2.3 垃圾回收统计
命令:jstat -gc pid

| 列名 | 说明 |
|---|---|
| S0C | 年轻代中第一个survior(幸存区)的容量(kb) |
| S1C | 年轻代中第二个survior(幸存区)的容量(kb) |
| S0U | 年轻代中第一个survior(幸存区)目前已使用的容量(kb) |
| S1U | 年轻代中第二个survior(幸存区)目前已使用的容量(kb) |
| EC | eden区的容量(kb) |
| EU | eden区目前已使用的容量(kb) |
| OC | 老年代的容量(kb) |
| OU | 老年目前已使用的容量(kb) |
| MC | 方法区的容量(kb) |
| MU | 方法区目前已使用的容量(kb) |
| CCSC | 压缩类空间的容量(kb) |
| CCSU | 压缩类空间目前已使用的容量(kb) |
| YGC | 从应用程序启动到采集时年轻代中gc次数 |
| YGCT | 从应用程序启动到采集时年轻代中gc所用时间(秒) |
| FGC | 从应用程序启动到采集时老年代中gc次数 |
| FGCT | 从应用程序启动到采集时老年代gc所用的时间(秒) |
| GCT | 从应用程序启动到采集时gc所用的总时间(秒) |
2.4 统计gc信息
命令:jstat -gcutil pid

| 列名 | 说明 |
|---|---|
| S0 | 年轻代中第一个(survisor)幸存区已使用的容量占比 |
| S1 | 年轻代中第二个(survisor)幸存区已使用的容量占比 |
| E | 伊旬园(eden)区已使用的容量占比 |
| O | 老年代区已使用的容量占比 |
| M | 元数据区已使用的占当前容量百分比 |
| CCS | 压缩类空间使用的占当前容量百分比 |
| YGC | 年轻代到目前gc次数 |
| YGCT | 年轻代到目前gc耗费的总时间(秒) |
| FGC | 老年代目前gc次数 |
| FGCT | 老年代目前gc耗费的总时间(秒) |
| GCT | 从应用程序到目前gc总耗时(秒) |
2.5 堆内存统计
命令:jstat -gccapacity pid

| 列名 | 说明 |
|---|---|
| NGCMN | 年轻代(young)中初始化(最小)的大小(kb) |
| NGCMX | 年轻代(young)中初始化(最大)的大小(kb) |
| NGC | 年轻代(young)中当前的容量(kb) |
| S0C | 年轻代中第一个(survisor)幸存区的容量(kb) |
| S1C | 年轻代中第二个(survisor)幸存区的容量(kb) |
| EC | 年轻代中(Eden)伊旬园的容量(kb) |
| OGCMN | 老年代(old)中初始化(最小)的容量(kb) |
| OGCMX | 老年代(old)中初始化(最大)的容量(kb) |
| OGC | 当前老年代的大小(kb) |
| OC | 当前老年代的大小(kb) |
| MCMN | 最小元数据容量(kb) |
| MCMX | 最大元数据容量(kb) |
| MC | 当前元数据空间大小(kb) |
| CCSMN | 最小压缩类空间大小(kb) |
| CCSMX | 最大压缩类空间大小(kb) |
| CCSC | 当前压缩类空间大小(kb) |
| YGC | 从应用程序启动到采集时年轻代gc的次数 |
| FGC | 从应用程序启动带采集时老年代gc的次数 |
2.6 新生代垃圾回收统计
命令:jstat -gcnew pid

| 列名 | 说明 |
|---|---|
| S0C | 年轻代中第一个(survisor)幸存区的容量(kb) |
| S1C | 年轻代中第二个(survisor)幸存区的容量(kb) |
| S0U | 年轻代中第一个(survisor)幸存区目前已使用的容量(kb) |
| S1U | 年轻代中第二个(survisor)幸存区目前已使用的容量(kb) |
| TT | 对象在新生代中存活的次数 |
| MTT | 对象在新生代中存活的最大次数 |
| DSS | 当前需要survivor(幸存区)的容量 (kb) |
| EC | 伊旬园(eden)区的大小(kb) |
| EU | 伊旬园(eden)区已使用的大小(kb) |
| YGC | 到目前年轻代gc的次数 |
| YGCT | 到目前年轻代gc所耗费的时间(秒) |
2.7 新生代内存统计
命令:jstat -gcnewcapacity pid

| 列名 | 说明 |
|---|---|
| MGCMN | 年轻代中初始化最小容量(kb) |
| MGCMX | 年轻代中初始化最大容量(kb) |
| NGC | 年轻代当前容量(kb) |
| S0CMX | 年轻代第一个幸存区(survisor)最大容量(kb) |
| S0C | 年轻代第一个幸存区(survisor)当前容量(kb) |
| S1CMX | 年轻代第二个幸存区(survisor)最大容量(kb) |
| S1C | 年轻代第二个幸存区(survisor)当前容量(kb) |
| ECMX | 年轻代伊旬园区(Eden)最大容量(kb) |
| EC | 年轻代伊旬园区(Eden)当前容量(kb) |
| YGC | 截止到目前年轻代gc次数 |
| FGC | 截止到目前老年代gc次数 |
2.8 老年代垃圾回收统计
命令:jstat -gcold pid

| 列名 | 说明 |
|---|---|
| MC | 方法区大小(kb) |
| MU | 方法区使用大小(kb) |
| CCSC | 压缩类空间大小 |
| CCSU | 压缩类空间使用大小 |
| OC | 老年代容量(kb) |
| OU | 老年代已使用容量(kb) |
| YGC | 年轻代gc次数 |
| FGC | 老年代gc次数 |
| FGCT | 老年代gc时消耗时间 |
| GCT | 截止到目前gc耗费的总时间(秒) |
2.9 老年代内存统计
命令:jstat -gcoldcapacity pid

| 列名 | 说明 |
|---|---|
| OGCMN | 老年代最小容量(kb) |
| OGCMX | 老年代最大容量(kb) |
| OGC | 老年代目前生成的容量(kb) |
| OC | 老年代目前容量(kb) |
| YGC | 截止到目前年轻代gc次数 |
| FGC | 截止到目前老年代gc次数 |
| FGCT | 截止到目前老年代gc耗费的总时间(秒) |
| GCT | 截止到目前gc耗费的总时间(秒) |
2.10 永久代内存统计
命令:jstat -gcmetacapacity pid

| 列名 | 说明 |
|---|---|
| MCMN | 最小元数据容量(kb) |
| MCMX | 最大元数据容量(kb) |
| MC | 当前元数据空间大小 |
| CCSMN | 最小压缩类空间大小 |
| CCSMX | 最大压缩类空间大小 |
| CCSC | 当前压缩类空间大小(kb) |
| YGC | 截止目前年轻代gc次数 |
| FGC | 截止目前老年代gc次数 |
| FGCT | 截止目前年轻代gc耗费的总时间(秒) |
| GCT | 截止目前老年代gc耗费的总时间(秒) |
2.11 最近二次gc统计
命令:gstat -gccause pid

| 列名 | 说明 |
|---|---|
| S0 | 年轻代中第一个(survisor)幸存区已使用的容量占比 |
| S1 | 年轻代中第二个(survisor)幸存区已使用的容量占比 |
| E | 伊旬园(eden)区已使用的容量占比 |
| O | 老年代区已使用的容量占比 |
| M | 元数据区已使用的占当前容量百分比 |
| CCS | 压缩类空间使用的占当前容量百分比 |
| YGC | 年轻代到目前gc次数 |
| YGCT | 年轻代到目前gc耗费的总时间(秒) |
| FGC | 老年代目前gc次数 |
| FGCT | 老年代目前gc耗费的总时间(秒) |
| GCT | 从应用程序到目前gc总耗时(秒) |
| LGCC | 最近垃圾回收的原因 |
| GCC | 当前垃圾回收的原因 |
2.12 JVM编译方法统计
命令:jstat -printcompilation pid

| 列名 | 说明 |
|---|---|
| Compiled | 最近编译方法的数量 |
| Size | 最近编译方法的字节码数量 |
| Type | 最近编译方法的编译类型 |
| Method | 方法名标识 |



















