JVM 使用jstat分析系统的垃圾回收情况

jstat -gcutil 输出结果分析_助你了解jvm命令,查找JVM堆栈信息,分析性能问题。下面介绍一下jstat命令:

jstat:虚拟机统计信息监视工具(JVM Statistics Monitoring Tool)
说明:监视虚拟机的各种运行状态:类装载、内存、垃圾收集等运行数据。只用于Java进程或Java应用
语法jstat [option] PID [interval] [count]
pid查找办法:可以使用ps -aux | grep java 或者jps –v 命令找到java 进程 pid 

参数分析:
option:
-class 查看类装载的信息
-gc 查看java堆的状况
-gccapacity 查看堆中各个区域的最小容量和最大容量
-gcutil 查看堆中各个区域已使用空间占其总空间的百分比
-gccause 与-gcutil相同,另外还输出了:导致上一次GC的原因和当前GC的原因
-gcnew 查看堆中新生代的状况
-gcnewcapacity 查看堆中新生代的最小容量和最大容量
-gcold 查看堆中老年代的状况
-gcoldcapacity 查看堆中老年代的最小容量和最大容量
-gcpermcapacity 查看堆中永久代的最小容量和最大容量
-gcmetacapacity 查看元数据空间的当前大小、最大容量和最小容量(jdk1.8)
interval:表示查询的间隔时间,单位:毫秒
count: 表示查询的次数,如果interval和count都省略,则默认为只查询一次。

举例

jstat -gcutil 2000 10 #每2秒打印一次,采样10次

各指标的含义:

S0 — Heap上的 Survivor space 0 区已使用空间的百分比

S1 — Heap上的 Survivor space 1 区已使用空间的百分比

E — Heap上的 Eden space 区已使用空间的百分比

O — Heap上的 Old space 区已使用空间的百分比

P — Perm space 区已使用空间的百分比

YGC — 从应用程序启动到采样时发生 Young GC 的次数

YGCT– 单位为秒,从应用程序启动到采样时 Young GC 所用的时间

FGC — 从应用程序启动到采样时发生 Full GC 的次数

FGCT– 单位为秒,从应用程序启动到采样时 Full GC 所用的时间

GCT — 单位为秒,从应用程序启动到采样时用于垃圾回收的总时间
新生代(Young)中的Eden区:E
E: Eden区已使用的空间占其总空间的百分比
EC:Eden区的容量(Eden Capacity)
EU:Eden区已使用的空间(Eden Use)
新生代(Young)中的Survivor区:S0 S1
老年代(Old):O
永久代(Permanent):P
jdk8中:
元数据空间(Metaspace):M
元数据空间中的压缩类空间(Compressed Class Space):CCS
说明:
1>jdk8中已经没有永久代了,取而代之的是元空间,元空间占用的是本地内存,不占用虚拟机的内存。
2>Metaspace由Klass Metaspace和NoKlass Metaspace两部分组成。
3>M表示Metaspace已使用的百分比,CCS表示Klass Metaspace已使用的百分比(CCS=CCSU/CCSC)。
4>M的值达到了90%以上,不一定能说明metaspace已经用了很多了,因为内存是慢慢commit的,所以我们的分母是慢慢变大的,不过当我们commit到一定量的时候就不会再增长了。
5>根据MC,MU,CCSC,CCSU来判断metaspace的状态更靠谱。(注:可以在jstat -gc 中看到MU)
注:S0/S0C/S0U、S1/S1C/S1U、O/OC/OU、P/PC/PU、M/MC/MU、CCS/CCSC/CCSU 与 E/EC/EU类似
LGCC:最后一次GC发生的原因
GCC: 当前GC发生的原因

gccause示例:

jstat -gccause 1 2000 10

jstat -gccapacity

NGCMN:新生代的最小(初始化)容量
NGCMX:新生代的最大容量
NGC: 新生代当前的容量
ECMX: 新生代中Eden区的最大容量
S0CMX、S1CMX:新生代中Survivor区的最大容量
OGCMN:老年代的最小(初始化)容量
OGCMX:老年代的最大容量
OGC: 老年代当前的容量
PGCMN:永久代的最小(初始化)容量
PGCMX:永久代的最大容量
PGC: 永久代当前的容量

jdk8中:

MCMN: 元数据空间最小容量
MCMX: 元数据空间最大容量
MC: 当前元数据空间的大小
CCSMN: 压缩类空间CCS(即:Klass Metaspace)的最小容量
CCSMX: 压缩类空间CCS(即:Klass Metaspace)的最大容量
CCSC: 当前压缩类空间CCS(即:Klass Metaspace)的大小
jstat -gcnew
TT: 老年化阈值。被移动到老年代之前,在新生代空存活的次数
MTT:最大老年化阈值。
DSS:幸存者区所需空间大小

注意:单位是都是KB

Reference

posted @ 2022-12-17 19:58  楼兰胡杨  阅读(680)  评论(0编辑  收藏  举报