jstat(JVM Statistics Monitoring Tool)是用于监视虚拟机各种运行状态信息的命令行工具,如:显示本地或者远程虚拟机进程中的类加载、内存、垃圾回收、JIT编译等运行时数据。
jstat -help|-options jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
参数说明:
option 命令选项,用户可以通过指定不同的选项值查询不同的虚拟机信息,主要分为3类:类装载、垃圾回收和运行期编译状况,更多选项见后续“命令选项”
-t 在输出的每行结果前面添加时间戳字段 Timestamp
-h 对输出结果进行分组,每隔 line 行就输出一次头信息
-J<flag> 将 <flag> 直接传递给运行时系统。
vmid 虚拟机进程ID。如果是本地虚拟机进程,VMID 与 LVMID 是一致的。如果是远程虚拟机进程,那么 VMID 的格式如下:[protocol:] [//] lvmid[@hostname[:port]/serverName]
interval 表示两次查询之间的间隔
count 表示执行查询的次数
注意:如果省略 interval 和 count 两个参数,则 jstat 命令只查询一次。例如:
C:\Users\Administrator>jstat -gcutil 6064 500 10 S0 S1 E O M CCS YGC YGCT FGC FGCT GCT 99.28 0.00 69.61 43.40 93.03 84.44 12 0.104 2 0.147 0.251 99.28 0.00 73.75 43.40 93.03 84.44 12 0.104 2 0.147 0.251 99.28 0.00 73.75 43.40 93.03 84.44 12 0.104 2 0.147 0.251 99.28 0.00 73.75 43.40 93.03 84.44 12 0.104 2 0.147 0.251 99.28 0.00 73.75 43.40 93.03 84.44 12 0.104 2 0.147 0.251 99.28 0.00 73.75 43.40 93.03 84.44 12 0.104 2 0.147 0.251 99.28 0.00 73.75 43.40 93.03 84.44 12 0.104 2 0.147 0.251 99.28 0.00 73.96 43.40 93.03 84.44 12 0.104 2 0.147 0.251 99.28 0.00 73.96 43.40 93.03 84.44 12 0.104 2 0.147 0.251 99.28 0.00 73.96 43.40 93.03 84.44 12 0.104 2 0.147 0.251上面表示 jstat 命令将每隔 500 毫秒查询一次 6064 进程的垃圾回收情况,一共查询 10 次。
-class 监视类装载、卸载数量、总空间及类装载所耗费的时间
-gc 监视 Java 堆状况,包括 Eden 区、2 个 survivor 区、老年代、永久代等的容量、已用空间、GC时间合计等信息
-gccapacity 监视内容与 -gc 基本相同,但输出主要关注 Java 堆各个区域使用到的最大和最小空间
-gcutil 监视内容与 -gc 基本相同,但输出主要关注已使用空间占总空间的百分比
-gccause 与 -gcutil 功能一样,但是会额外输出导致上一次 GC 产生的原因
-gcnew 监视新生代 GC 的情况
-gcnewcapacity 监视内容与 -gcnew 基本相同,输出主要关注使用到的最大和最小空间
-gcold 监视老年代 GC 的状况
-gcoldcapacity 监视内容与 -gcold 基本相同,输出主要关注使用到的最大和最小空间
-gcpermcapacity (JDK8一下版本可用)输出永久代使用到的最大和最小空间
-gcmetacapacity (JDK8版本后可用)在 JDK8 中废弃了 PermGen 永久代,添加了元空间(Metaspace),使用该参数输出元空间使用到的最大和最小空间
-compiler 输出 JIT 编译器编译过的方法、耗时等信息
-printcompilation 输出已经被 JIT 编译的方法
(1)
C:\Users\Administrator>jstat -class 6064 Loaded Bytes Unloaded Bytes Time 5387 11283.5 0 0.0 13.37
(2)
C:\Users\Administrator>jstat -gc 6064 S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT 3584.0 4608.0 3558.2 0.0 38912.0 29878.6 32256.0 13999.8 34816.0 32390.8 5120.0 4323.1 12 0.104 2 0.147 0.251
(3)
C:\Users\Administrator>jstat -gccapacity 6064 NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC 8192.0 87040.0 48128.0 3584.0 4608.0 38912.0 16384.0 175104.0 32256.0 32256.0 0.0 1079296.0 34816.0 0.0 1048576.0 5120.0 12 2
(4)
C:\Users\Administrator>jstat -gcutil 6064 S0 S1 E O M CCS YGC YGCT FGC FGCT GCT 99.28 0.00 75.17 43.40 93.03 84.44 12 0.104 2 0.147 0.251
(5)
C:\Users\Administrator>jstat -gccause 6064 S0 S1 E O M CCS YGC YGCT FGC FGCT GCT LGCC GCC 99.28 0.00 77.59 43.40 93.03 84.44 12 0.104 2 0.147 0.251 Allocation Failure No GC
(6)
C:\Users\Administrator>jstat -gcnew 6064 S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT 3584.0 4608.0 3558.2 0.0 2 15 4608.0 38912.0 30429.1 12 0.104
(7)
C:\Users\Administrator>jstat -gcnewcapacity 6064 NGCMN NGCMX NGC S0CMX S0C S1CMX S1C ECMX EC YGC FGC 8192.0 87040.0 48128.0 28672.0 3584.0 28672.0 4608.0 86016.0 38912.0 12 2
(8)
C:\Users\Administrator>jstat -gcold 6064 MC MU CCSC CCSU OC OU YGC FGC FGCT GCT 34816.0 32390.8 5120.0 4323.1 32256.0 13999.8 12 2 0.147 0.251
(9)
C:\Users\Administrator>jstat -gcoldcapacity 6064 OGCMN OGCMX OGC OC YGC FGC FGCT GCT 16384.0 175104.0 32256.0 32256.0 12 2 0.147 0.251
(10)
C:\Users\Administrator>jstat -gcmetacapacity 6064 MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC FGCT GCT 0.0 1079296.0 34816.0 0.0 1048576.0 5120.0 12 2 0.147 0.251
(11)
C:\Users\Administrator>jstat -compiler 6064 Compiled Failed Invalid Time FailedType FailedMethod 3401 0 0 5.94 0
(12)
C:\Users\Administrator>jstat -printcompilation 6064 Compiled Size Type Method 3413 54 1 org/openide/util/RequestProcessor$TickTac cancelImpl