查看虚拟机运行时信息---jstat命令
jstat是一个可以用于观察Java应用程序运行时相关信息的工具。它的功能非常强大,可以通过它查看堆信息的详细情况。它的基本使用语法为:
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
- 选项option可以由以下值构成。
- -class: 显示ClassLoader的相关信息。
- -compiler:显示JIT编译的相关信息。
- -gc:显示与GC相关的堆信息。
- -gcccapacity:显示各个代的容量及使用情况。
- -gcccause:显示垃圾收集相关信息(同-gcutil),同时显示最后一次或当前正在发生的垃圾收集的诱发原因。
- -gcnew:显示新生代信息。
- -gcnewcapacity:显示新生代大小与使用情况。
- -gcold:显示老年代和永久代的信息。
- -gcoldcapacity:显示老年代的大小。
- -gcpermcapacity:显示永久代的大小。
- -gcutil:显示垃圾收集信息。
- -printcompilation:输出JIT编译的方法信息。
- -t 参数可以在输出信息前加上一个Timestamp列,显示程序运行时间。
- -h 参数可以在周期性数据输出时,输出多少行数据后,跟着输出一个表头信息。
- interval 参数用于指定输出统计数据的周期,单位为毫秒。
- count 用于指定一共输出多少次数据。
如下示例输出Java进程 的ClassLoader相关信息。每秒钟统计一次信息,一共输出两次。
在-class 的输出中,Loaded表示载入了类的数量,Bytes表示载入类的合计大小,Unloaded表示卸载类的数量,第2个Bytes表示卸载类的大小,Time表示在加载类和卸载类上所花的时间。
下例显示了查看JIT编译的信息:
Compiler 表示编译任务执行的次数,Failed 表示编译失败的次数, Invalid 表示编译不可用的次数, Time 表示编译的总耗时,FailedType 表示最后一次编译失败的类型, FailedMethod 表示最后一次编译失败的类名和方法名。
下例显示了与GC相关的堆信息的输出:
- S0C:s0(from)的大小(KB)(s0 第一个幸存区 capacity)。
- S1C:s1(from)的大小(s1 第二个幸存区 capacity)。
- S0U:s0(from)已使用的空间(KB)(s0 第一个幸存区 Used / utilization)。
- S1U:s1(from)已使用的空间(KB)(s1 第二个幸存区 Used / utilization)。
- EC:eden区的大小(KB)(eden-伊甸园区 capacity)。
- EU:eden区的使用空间(KB)(eden-伊甸园区 Used / utilization)。
- OC:老年代的大小(KB)。
- OU:老年代已经使用的空间(KB)。
- MC:元空间的大小(Metaspace Capacity 已经不是之前的method area了,现在改名叫元空间了,虽然都是M开头)。
- MU:元空间使用大小(Metaspace Used)。
- CCSC:压缩类空间大小(Compressed class space capacity(KB))。
- CCSU:压缩类空间使用大小(Compressed class space used(KB))。
- YGC:年轻代垃圾回收次数(young gc)。
- YGCT:年轻代垃圾回收消耗时间(young gc time)。
- FGC:对堆内存整体包含(新生代、老年代、永久代)进行垃圾回收次数(full gc)。
- FGCT:对堆内存整体包含(新生代、老年代、永久代)进行垃圾回收消耗时间(full gc time)。
- GCT:垃圾回收消耗总时间(gc time)。