jstat : 虚拟机统计信息监视工具

    科技2025-06-23  16

    jstat 概念

    jstat(JVM Statistics Monitoring Tool) 用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或远程虚拟机进程中类装载、内存、垃圾收集、JIT编译等运行数据。

    jstat命令格式

    jstat[option vmid[interval[s|ms][count]]]

    选项option代表着用户希望查询的虚拟机信息,主要分为3类:类装载、垃圾收集、运行期编译状况:

    选项作用-class监视类装载、卸载数量、总空间以及类装载所耗费的时间-gc监视Java堆状况,包括Eden区、两个survivor区、老年代、元空间的容量、已用空间、GC时间合计等信息-gccapacity监视内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大、最小空间-gcutil监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比-gccause与-gcutil功能一样,但是会额外输出导致上一次GC产生的原因-gcnew监视新生代GC状况-gcnewcapacity监视内容与-gcnew基本相同,输出主要关注使用到的最大、最小空间-gcold监视老年代状况-gcoldcapacity监视内容与-gcold基本相同,输出主要关注用到的最大、最小空间-gcmetacapacity输出元数据用到的最大、最小空间-compiler输出JIT编译器编译过的方法、耗时等信息-printcompilation输出已经被JIT编译的方法

    参数interval和count代表查询间隔和次数,如果省略这两个参数,说明只查询一次.

    假设需要每10000毫秒查询一次进程为16008的垃圾收集状况,一共查询3次,那命令应当是:

    jstat -gcutil 16008 10000 3

    jstat -class pid :

    监视类装载、卸载数量、总空间以及类装载所耗费的时间

    Loaded : 加载class的数量Bytes: 加载的class所占空间大小Unloaded: 未加载类的数量Bytes:未加载的类所占空间大小Time: 耗时

    jstat -gc pid :

    垃圾回收统计

    jstat -gccapacity pid:

    堆内存统计

    NGCMN: 新生代最小容量NGCMX : 新生代最大容量NGC: 当前新生代容量S0C: S0区大小S1C: S0区大小EC: Eden区大小OGCMN: 老年代最小容量OGCMX: 老年代最大容量OGC: 当前年老代的容量 (KB)OC: 当前年老代的容量 (KB)MCMN: 最小元数据容量MCMX: 最大元数据容量MC: 当前元数据空间大小CCSMN: 最小压缩类空间大小CCSMX: 最大压缩类空间大小CCSC: 当前压缩类空间大小YGC: 年轻代gc次数FGC: 老年代GC次数

    jstat -gcutil pid:

    总结垃圾回收统计

    S0:幸存1区当前使用比例S1:幸存2区当前使用比例E:伊甸园区使用比例O:老年代使用比例M:元数据区使用比例CCS:压缩使用比例YGC:年轻代垃圾回收次数FGC:老年代垃圾回收次数FGCT:老年代垃圾回收消耗时间GCT:垃圾回收消耗总时间

    jstat -gccause pid:

    垃圾收集统计概述(同-gcutil),附加最近两次垃圾回收事件的原因

    LGCC:最近垃圾回收的原因GCC:当前垃圾回收的原因

    jstat -gcnew pid:

    新生代垃圾回收统计

    S0C:第一个幸存区大小S1C:第二个幸存区的大小S0U:第一个幸存区的使用大小S1U:第二个幸存区的使用大小TT:对象在新生代存活的次数MTT:对象在新生代存活的最大次数DSS:期望的幸存区大小EC:伊甸园区的大小EU:伊甸园区的使用大小YGC:年轻代垃圾回收次数YGCT:年轻代垃圾回收消耗时间

    jstat -gcnewcapacity pid:

    新生代内存统计

    NGCMN:新生代最小容量NGCMX:新生代最大容量NGC:当前新生代容量S0CMX:最大幸存1区大小S0C:当前幸存1区大小S1CMX:最大幸存2区大小S1C:当前幸存2区大小ECMX:最大伊甸园区大小EC:当前伊甸园区大小YGC:年轻代垃圾回收次数FGC:老年代回收次数

    jstat -gcold pid:

    老年代垃圾回收统计

    MC:方法区大小MU:方法区使用大小CCSC:压缩类空间大小CCSU:压缩类空间使用大小OC:老年代大小OU:老年代使用大小YGC:年轻代垃圾回收次数FGC:老年代垃圾回收次数FGCT:老年代垃圾回收消耗时间GCT:垃圾回收消耗总时间

    jstat -gcoldcapacity pid:

    老年代内存统计

    OGCMN:老年代最小容量OGCMX:老年代最大容量OGC:当前老年代大小OC:老年代大小YGC:年轻代垃圾回收次数FGC:老年代垃圾回收次数FGCT:老年代垃圾回收消耗时间GCT:垃圾回收消耗总时间

    jstat -gcmetacapacity pid:

    元数据空间统计

    MCMN:最小元数据容量MCMX:最大元数据容量MC:当前元数据空间大小CCSMN:最小压缩类空间大小CCSMX:最大压缩类空间大小CCSC:当前压缩类空间大小YGC:年轻代垃圾回收次数FGC:老年代垃圾回收次数FGCT:老年代垃圾回收消耗时间GCT:垃圾回收消耗总时间

    jstat -compiler pid:

    JIT编译器过的方法、耗时等

    Compiled:编译数量Failed:失败数量Invalid:不可用数量Time:时间FailedType:失败类型FailedMethod:失败的方法

    jstat -printcompilation pid:

    已经被JIT编译过的方法

    Compiled:最近编译方法的数量Size:最近编译方法的字节码数量Type:最近编译方法的编译类型Method:方法名标识

    参考:

    https://blog.csdn.net/maosijunzi/article/details/46049117

    Processed: 0.010, SQL: 8