jstat:虚拟机统计信息监视工具(JVM Statistics Monitoring Tool)java
说明:监视虚拟机的各类运行状态:类装载、内存、垃圾收集等运行数据。 格式:jstat [option] PID [interval] [count] 参数: option: -class 查看类装载的信息 -gc 查看java堆的情况 -gccapacity 查看堆中各个区域的最小容量和最大容量 -gcutil 查看堆中各个区域已使用空间占其总空间的百分比 -gccause 与-gcutil相同,另外还输出了:致使上一次GC的缘由和当前GC的缘由 -gcnew 查看堆中新生代的情况 -gcnewcapacity 查看堆中新生代的最小容量和最大容量 -gcold 查看堆中老年代的情况 -gcoldcapacity 查看堆中老年代的最小容量和最大容量 -gcpermcapacity 查看堆中永久代的最小容量和最大容量 -gcmetacapacity 查看元数据空间的当前大小、最大容量和最小容量(jdk1.8) interval:表示查询的间隔时间,单位:毫秒 count: 表示查询的次数,若是interval和count都省略,则默认为只查询一次。 查询结果标识: 通用: Minor GC(Young GC): YGC: 进程从启动以来Minor GC的次数 YGCT:进程从启动以来Minor GC所花费的时间 Full GC:FGC表示次数,FGCT表示时间 FGC: 进程从启动以来Full GC的次数 FGCT:进程从启动以来Full GC所花费的时间 GCT: Minor GC和Full GC总共花费的时间 jstat -gc jstat -gcutil jstat -gccause 新生代(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的状态更靠谱。 注: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发生的缘由 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