RednaxelaFX 发表于 2013-2-1 09:42:51

jstat显示的full GC次数与CMS周期的关系

使用Oracle/Sun JDK来运行Java程序的时候,大家或许有用过jstat工具来观察GC的统计数据,例如上一篇日志里的
$ jstat -gcutil `pgrep -u admin java`S0   S1   E      O      P   YGC   YGCT    FGC    FGCT   GCT    37.21   0.0099.8112.8776.82   1767196.8433085 2998.088 3194.931
以前写过一帖说明jstat工具显示的读数与jvmstat计数器之前的关系:用Java获取full GC的次数?(2)
可以知道,FGC列表示的是full GC次数,对应的jvmstat计数器是sun.gc.collector.1.invocations:
column {header "^FGC^"/* Full Collections */data sun.gc.collector.1.invocationsalign rightwidth 5scale rawformat "0"}

但是这个计数器在CMS GC里到底是指什么的次数呢?

在JDK 6的HotSpot VM中,Oracle/Sun有官方支持的GC只有CMS比较特殊(Garbage-First在JDK6里还没正式支持,不算在内):其它几种GC的每个周期都是完全stop-the-world的;而CMS的每个并发GC周期则有两个stop-the-world阶段——initial mark与final re-mark,其它阶段是与应用程序一起并发执行的。
<div class="quote_title">Memory Management in the Java HotSpot™ Virtual Machine 写道
页: [1]
查看完整版本: jstat显示的full GC次数与CMS周期的关系