jstat -gcnew命令详解

jstat全称Java Virtual Machine Statistics Monitoring Tool,是随jdk发布的一款用于输出jvm统计参数的命令行工具,用过jvisualvm的肯定会说有了jvisualvm为什么还需要用jstat命令行呢,jstat虽然可视化效果差些,但其在实际生产环境用起来却很方便,一般线上环境不会打开jmxremote功能,这样jvisualvm就无用武之地。

我们在学习过程中如果要真正了解垃圾收集的过程,jstat也更合适些,jvisualvm虽然可视化效果好,但是这款工具却会给系统带来更多的垃圾,如下图所示

jstat -gcnew命令详解_第1张图片

即使你什么都不做,jvisualvm的监控自身也会创建很多对象,然后发生gc,这给我们研究gc过程带来诸多不便,好了废话不多说了,接下来看下jstat -gcnew用于统计年轻代垃圾收集统计

输入jstat -h就可以输出jstat命令的使用说明,使用jstat -options可以获取jstat命令支持的可选项

jstat -gcnew命令详解_第2张图片

jstat -gcnew命令详解_第3张图片

接下来我们用jstat命令来监控本地启动的一个jvm进程

jstat -gcnew命令详解_第4张图片

上面监控进程23108的年轻代垃圾收集情况,每2秒收集一次,从上图可以看到,数据是比较稳定的,不会像jvisualvm一样自身不断产生垃圾,下面解释下表头代表的意义:

S0C S0容量 ,单位为KB
S1C S1容量,单位为KB
S0U S0区的使用情况,单位为KB
S1U S2区的使用情况,单位为KB
TT Tenuring threshold,年级超过或等于TT的对象都会进入老年代,该值可以作为一个年轻代对象晋升老年代的速度指向标,该值长时间过小(比如为1),说明年轻代的对象很快就会进入老年代,
MTT Maximum tenuring threshold,可以通过-XX:MaxTenuringThreshold=N设置,默认为15
DSS Desired survivor size,单位为KB,这个值默认为Survivor区的50%,当Survivor区大小超过该值时就会将装不下的对象提前放入老年代
EC Eden区容量,单位为KB
EU Eden区使用量,单位为KB
YGC Young GC次数
YGCT Young GC花费时间

你可能感兴趣的:(java)