作用
jstat的主要作用就是对Java应用程序的资源和性能进行实时监控的命令行工具,主要包括GC情况和Heap Size资源使用情况。
jstat命令格式
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
参数解释:
- option 常见的都是使用-gcutil查看gc情况,其他可选项见下图。
- vmid : VM的进程号,即当前运行的java进程号。
- interval : 间隔时间,单位为秒或毫秒
- count:打印次数,如果缺省则打印无数次。
option选项代表着用户希望查询的虚拟机信息,主要分为3类:类加载、垃圾收集和运行期编译状况。具体选项见下图:
参数interval和count代表查询间隔和次数,如果省略这两个参数,说明只查询一次。假设需要每250毫秒查询一次进程5828垃圾收集状况,一共查询5次,那命令行如下:
jstat -gc 5828 250 5
垃圾回收统计
查看gc的统计信息,关注点 主要是 已使用/总空间的占比情况。
jstat -gcutil 31798
运行截图(JDK1.8):
参数含义:
参数 | 描述 |
---|---|
S0 | 年轻代中第一个survivor(幸存区)已使用的占当前容量百分比 |
s1 | 年轻代中第二个survivor(幸存区)已使用的占当前容量百分比 |
E | 年轻代中Eden已使用的占当前容量百分比 |
O | old代已使用的占当前容量百分比 |
M | 元空间(MetaspaceSize)已使用的占当前容量百分比 |
CCS | 压缩使用比例 |
YGC | 年轻代垃圾回收次数 |
FGC | 老年代垃圾回收次数 |
FGCT | 老年代垃圾回收消耗时间 |
GCT | 垃圾回收消耗总时间 |
堆内存使用情况统计
单位KB。
jstat -gccapacity 3400 20 20
运行截图(JDK1.8):
参数 | 描述 |
---|---|
NGCMN | 新生代最小容量 |
NGCMX | 新生代最大容量 |
NGC | 当前新生代容量 |
S0C | 第一个幸存区大小 |
S1C | 第二个幸存区的大小 |
EC | 伊甸园区的大小 |
OGCMN | 老年代最小容量 |
OGCMX | 老年代最大容量 |
OGC | 当前老年代大小 |
OC | 当前老年代大小 |
MCMN | 最小元数据容量 |
MCMX | 最大元数据容量 |
MC | 当前元数据空间大小 |
CCSMN | 最小压缩类空间大小 |
CCSMX | 最大压缩类空间大小 |
CCSC | 当前压缩类空间大小 |
YGC | 年轻代gc次数 |
FGC | 老年代GC次数 |
类加载统计
jstat -class 3400 1000 100
参数 | 描述 |
---|---|
Loaded | 加载class的数量 |
Bytes | 所占用空间大小 |
Unloaded | 未加载数量 |
Bytes | 未加载占用空间 |
Time | 时间 |