
jstat
- 可以检查
JVM
整体的运行情况,可以看到 新生代,老年代等的内存使用情况,以及GC
次数和耗时 - 命令格式 如
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
- 其中
-option
必选参数表示命令参数 如 gc
等, -t
为可选参数表示是否打印时间(秒),-h<lines>
可选参数,表示每隔多少行打印头部列表,如设置 -h 5
, 那么每五条记录就会重新打印表头,vmid
必选参数,Java
进程id
,interval
可选参数表示采样的时间间隔,count
可选参数表示需要采样多少条,

jstat -gc pid
jstat -gc pid
这是最常用的语法,可以直接查看内存和垃圾回收情况- 首先我们要获得
Java
进程的 PID
信息,可以通过 jps
命令来获取 - 之后执行
jstat -gc pid
即可看到对应 Java
进程的内存情况,如下:

这里说明一下关于这些列名的含义:
S0C
: 新生代中第一个 Survivor
(即 From
区)的容量大小 (千字节)S1C
: 新生代中第二个 Survivor
(即 To
区)的容量大小 (千字节)S0U
: 新生代 From Survivor
区已使用内存大小(千字节)S1U
: 新生代 To Survivor
区一使用内存大小(千字节)EC
: 新生代 Eden
区的容量大小(千字节)EU
: 新生代 Eden
区已使用内存大小(千字节)OC
: 老年代空间容量大小(千字节)OU
: 老年代已使用内存大小(千字节)MC
: 方法区的空间大小 (千字节)MU
: 方法区已使用的空间大小(千字节)YGC
: 从系统启动到现在 Young GC/Minor GC
的次数YGCT
: Young GC
总耗时(秒)FGC
:从系统启动到现在 Full GC
的次数FGCT
: Full GC
的总耗时(秒)GCT
: 垃圾回收总的耗时(秒)NGCMN
:年轻代( young
)中初始化(最小)的大小 (千字节) NGCMX
:年轻代( young
)的最大容量 (千字节) GC
:年轻代( young
)中当前的容量 (千字节) OGCMN
: old
代中初始化(最小)的大小 (千字节) OGCMX
: old
代的最大容量 (千字节) OGC
: old
代当前新生成的容量 (千字节) PGCMN
: perm
代中初始化(最小)的大小 (千字节) PGCMX
: perm
代的最大容量 (千字节) PGC
: perm
代当前新生成的容量 (千字节) S0
:年轻代中 From survivor
(幸存区)已使用的占当前容量百分比 S1
:年轻代中 To Survivor
(幸存区)已使用的占当前容量百分比 E
:年轻代中 Eden
(伊甸园)已使用的占当前容量百分比 O
: old
代已使用的占当前容量百分比 P
: perm
代已使用的占当前容量百分比 S0CMX
:年轻代中 From survivor
(幸存区)的最大容量 (千字节) S1CMX
:年轻代中 To Survivor
(幸存区)的最大容量 (千字节) ECMX
:年轻代中 Eden
(伊甸园)的最大容量 (千字节) DSS
:当前需要 survivor
(幸存区)的容量 (千字节)( Eden
区已满) TT
: 持有次数限制 MTT
: 最大持有次数限制
jstat -gcutil PID
- 一般我们还可以通过
jstat -gcutil pid
来获取分代年龄的使用情况,显示为占比,如下,表头参考上面

jstat -gccapacity PID
-gccapacity
命令主要用来分析堆内存,用法参考上面,如下效果,表头含义参看上面

其他一些命令参数
jstat -gcnew PID
: 年轻代GC
分析,其中 TT
和 MTT
可以看到对象在年龄代存活的年龄和存活的最大年龄

jstat -gcnewcapacity PID
: 年轻代内存分析

jstat -gcold PID
: 老年代 GC
分析

jstat -gcoldcapacity
: 老年代内存分析

jstat -gcmetacapacity PID
: 元数据内存分析
jstat -class PID

1 2 3 4 5 6
| Loaded:加载class的数量 Bytes:所占用空间大小 Unloaded:未加载数量 Bytes:未加载占用空间 Time:时间
|
jstat -compiler PID
- 编译信息的统计命令, 如下命令
jstat -class 15372

1 2 3 4 5 6
| Compiled:编译数量。 Failed:失败数量 Invalid:不可用数量 Time:时间 FailedType:失败类型 FailedMethod:失败的方法
|
jstat -printcompilation PID
JVM
编译方法的统计,如下命令 jstat -printcompilation 15372

1 2 3 4
| Compiled:最近编译方法的数量 Size:最近编译方法的字节码数量 Type:最近编译方法的编译类型。 Method:方法名标识。
|
好了今天就说到这里, jstat
死一个非常还用的工具,需要平时多使用多分析才能真真掌握,下次我们接着说相关的工具的使用~🕹🕹🕹🕹