
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: 最大持有次数限制
<a name="nZdje"></a>
-
jstat -gcutil PID
- 一般我们还可以通过
jstat -gcutil pid来获取分代年龄的使用情况,显示为占比,如下,表头参考上面

<a name="Dh6RS"></a>
jstat -gccapacity PID
-
-gccapacity命令主要用来分析堆内存,用法参考上面,如下效果,表头含义参看上面

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

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

-
jstat -gcold PID: 老年代GC分析

-
jstat -gcoldcapacity: 老年代内存分析

-
jstat -gcmetacapacity PID: 元数据内存分析
<a name="mP8cH"></a>
jstat -class PID
- 统计进程中加载的类的数量,如下:

- 说明:
Loaded:加载class的数量
Bytes:所占用空间大小
Unloaded:未加载数量
Bytes:未加载占用空间
Time:时间
<a name="FpFCV"></a>
jstat -compiler PID
- 编译信息的统计命令, 如下命令
jstat -class 15372

- 说明:
Compiled:编译数量。
Failed:失败数量
Invalid:不可用数量
Time:时间
FailedType:失败类型
FailedMethod:失败的方法
<a name="DbXrJ"></a>
jstat -printcompilation PID
-
JVM编译方法的统计,如下命令jstat -printcompilation 15372

- 说明:
Compiled:最近编译方法的数量
Size:最近编译方法的字节码数量
Type:最近编译方法的编译类型。
Method:方法名标识。
好了今天就说到这里,
jstat死一个非常还用的工具,需要平时多使用多分析才能真真掌握,下次我们接着说相关的工具的使用~🕹🕹🕹🕹
本文由AnonyStar 发布,可转载但需声明原文出处。
更多文章关注笔者博客 :云栖简码 i-code.online
