监控JVM状态。
概要
jstat [ generalOption | outputOptions vmid [ interval[s|ms] [ count ] ]
generalOption
在使用通用选项后,不能跟其他参数。
- -help显示帮助信息。
- -options显示统计选项。
outputOptions
一个统计选项加一些额外选项如-t*,-h,-J*。
输出为一个表格,以空格隔开。-h*为头部信息显示频率。-t显示从JVM启动开始经过的时间,单位秒。interval制定显示频率,count指定次数。-J*javaOption:传递java参数到java应用启动器;如-J-Xms48m设定启动内存为48MB。
统计选项如下:
class 显示统计类加载器信息。
1
2
3-> % jstat -class 3431
Loaded Bytes Unloaded Bytes Time
7474 13825.1 48 64.0 7.10列名 描述 Loaded 装载的类的数量 Bytes 装载类所占用的字节数 Unloaded 卸载类的数量 Bytes 卸载类的字节数 Time 装载和卸载类所花费的时间 compiler 显示JVM 即时编译器统计信息。
1 | -> % jstat -compiler 3431 |
列名 | 描述 |
---|---|
Compiled | 编译任务执行数量 |
Failed | 编译任务执行失败数量 |
Invalid | 编译任务执行失效数量 |
Time | 编译任务消耗时间 |
FailedType | 最后一个编译失败任务的类型 |
FailedMethod | 最后一个编译失败任务所在的类及方法 |
* gc 显示垃圾回收堆信息。 |
1 | -> % jstat -gc 3431 |
后缀C为容量,U为已使用空间,T为时间;首字符S为survivor区域,E为eden区,O为老年区,M为MetaSpace;CCS为压缩类空间,YGC为年轻代垃圾回收,FGC为FullGC;GCT为垃圾回收总时间。这里空间大小单位为KB,时间单位为秒,YGC和FGC单位为次。
- gccapacity 显示各代容量统计信息。
1 | -> % jstat -gccapacity 3431 |
NGC:新生代大小,OGC:老年代大小,MCM:meta space大小;MN:最小值,MX:最大值;其他参考gc选项。
- gccause 汇总垃圾统计信息(同-gcutil)和原因。
1 | -> % jstat -gccause 3431 |
这里的空间为已使用的百分比表示,如S1为57.54表示survivor 1已使用了57.54%。LGCC为最近一次造成垃圾回收的原因,GCC为当前垃圾回收的原因。
- gcnew 年轻代对象的信息。
1 | -> % jstat -gcnew 3431 |
TT:晋升阈值;MIT:最大晋升阈值;DSS:期望幸存区大小。
- gcnewcapacity 年轻代对象的信息及其占用量。
1 | -> % jstat -gcnewcapacity 3431 |
CMX:容量最大值。
- gcold 老年区以及元区域的对象统计信息。
1 | -> % jstat -gcold 3431 |
- gcoldcapacity 老年区以及元区域的对象以及容量信息统计信息。
1 | -> % jstat -gcoldcapacity 3431 |
- gcmetacapacity metaspace区域大小信息。
1 | -> % jstat -gcmetacapacity 3431 |
- gcutil 垃圾回收统计信息。
1 | -> % jstat -gcutil 3431 |
这里的空间描述为使用百分比。
- printcompilation 当前VM执行的信息
1 | -> % jstat -printcompilation 3431 |
列名 | 描述 |
---|---|
Compiled | 最近编译的方法执行的编译任务数 |
Size | 最近方法生成的字节码的大小 |
Type | 最近编译类型 |
Method | 最近编译方法 类名 方法名 |
示例
带时间戳,没3行显示一次头部,采样间隔为1秒,采样5次:
1 | -> % jstat -gcutil -t -h3 3431 1s 5 |