|
使用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.00 99.81 12.87 76.82 1767 196.843 3085 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.invocations align right width 5 scale raw format "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 写道 |
|