JDK命令行工具-jstat
jstat:虚拟机统计信息监视工具
jstat用于见识虚拟机各种运行状态信息的命令行工具。它可以显示本地或远程虚拟机进程中的类加载、内存、垃圾收集、JIT编译等运行数据。
jstat命令格式:jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
option代表着用户希望查询的虚拟机信息,主要分为3类:类加载、垃圾收集、运行期编译状况,具体有:
选项 | 作用 |
---|---|
-class | 监视类装载、卸载数量、总空间及装载所耗费时间 |
-gc | 监视Java堆状况,包括Eden区、两个Survivor区、老年代、永久代等的容量、已用空间、GC时间合计等信息 |
-gccapacity | 监视内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大、最小空间 |
-gcutil | 监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比 |
-gccause | 与-gcutil功能一样,但是会额外输出导致上一次GC产生的原因 |
-gcnew | 监视新生代的GC状况 |
-gcnewcapacity | 监视内容与-gcnew基本相同,输出主要关注使用到的最大、最小空间 |
-gcold | 监视老年代的GC状况 |
-gcoldcapacity | 监视内容与-gcold基本相同,输出主要关注使用到的最大、最小空间 |
-gcpermcapacity | 输出永久代使用到的最大、最小空间 |
-compiler | 输出JIT编译器编译过的方法、耗时等信息 |
-printcompilation | 输出已经被JIT编译的方法 |
vmid:指虚拟机进程ID,
-t:可以在打印的列加上Timestamp列,用于显示系统运行的时间
-h:可以在周期性数据数据的时候,可以在指定输出多少行以后输出一次表头
interval:执行每次的间隔时间,单位为毫秒
count:用于指定输出多少次记录
示例:
-
jstat -class <vmid>
- Loaded : 已经装载的类的数量
- Bytes : 装载类所占用的字节数
- Unloaded:已经卸载类的数量
- Bytes:卸载类的字节数
- Time:装载和卸载类所花费的时间
-
jstat -compiler <vmid>
- Compiled:编译任务执行数量
- Failed:编译任务执行失败数量
- Invalid :编译任务执行失效数量
- Time :编译任务消耗时间
- FailedType:最后一个编译失败任务的类型
- FailedMethod:最后一个编译失败任务所在的类及方法
-
jstat -gc <vmid>
-
S0C:年轻代中第一个survivor(幸存区)的容量 (字节)
-
S1C:年轻代中第二个survivor(幸存区)的容量 (字节)
-
S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
-
S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
-
EC:年轻代中Eden(伊甸园)的容量 (字节)
-
EU:年轻代中Eden(伊甸园)目前已使用空间 (字节)
-
OC:Old代的容量 (字节)
-
OU:Old代目前已使用空间 (字节)
-
MC:metaspace(元空间)的容量 (字节)
-
MU:metaspace(元空间)目前已使用空间 (字节)
-
YGC:从应用程序启动到采样时年轻代中gc次数
-
YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
-
FGC:从应用程序启动到采样时old代(全gc)gc次数
-
FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
-
GCT:从应用程序启动到采样时gc用的总时间(s)
-
-
jstat -printcompilation <vmid>
- Compiled :编译任务的数目
- Size :方法生成的字节码的大小
- Type:编译类型
- Method:类名和方法名用来标识编译的方法。类名使用/做为一个命名空间分隔符。方法名是给定类中的方法。上述格式是由-XX:+PrintComplation选项进行设置的