JDK 1.6 update 23 (私が見つけた最新の 1.6 バージョン) のソース コードで "secs" を検索し、GC コード フォルダーから正規表現 "[^"]*->[^"]*" を検索しました。手がかりが見つかることを願って。OpenJDK 1.7 コードも検索しました。次に、HotSpot フォルダー全体で "[^"]*->[^"]*"?.*secs を検索してみました。それでも、私が見つけた GC ロギングの唯一の行は、あなたが見ているものにリモートで関連しているようです
gclog_or_tty->print("[%s-concurrent-%s: %3.3f/%3.3f secs]",
_collector->cmsGen()->short_name(),
_phase, _collector->timerValue(), _wallclock.seconds());
これは、concurrentMarkSweepGeneration.cpp にあります。これまで見てきたフォーマットとはかけ離れています。よく検索していないか、アップデート 23 とアップデート 25 の間で GC ロギングに関して何かが変更されました。
どこを見ればよいか、何を検索すればよいかについて明確な考えをお持ちの方がいらっしゃいましたら、喜んでお教えいたします。
EDIT:待って、concurrentMarkSweepGeneration.cppの827行目から始まる何かを見つけました:
void ConcurrentMarkSweepGeneration::printOccupancy(const char *s) {
GenCollectedHeap* gch = GenCollectedHeap::heap();
if (PrintGCDetails) {
if (Verbose) {
gclog_or_tty->print(" [%d %s-%s: "SIZE_FORMAT"("SIZE_FORMAT")]",
level(), short_name(), s, used(), capacity());
} else {
gclog_or_tty->print(" [%d %s-%s: "SIZE_FORMAT"K("SIZE_FORMAT"K)]",
level(), short_name(), s, used() / K, capacity() / K);
}
}
if (Verbose) {
gclog_or_tty->print(" "SIZE_FORMAT"("SIZE_FORMAT")",
gch->used(), gch->capacity());
} else {
gclog_or_tty->print(" "SIZE_FORMAT"K("SIZE_FORMAT"K)",
gch->used() / K, gch->capacity() / K);
}
}
そして、その関数はここでのみ呼び出されています:
void CMSCollector::do_CMS_operation(CMS_op_type op) {
gclog_or_tty->date_stamp(PrintGC && PrintGCDateStamps);
TraceCPUTime tcpu(PrintGCDetails, true, gclog_or_tty);
TraceTime t("GC", PrintGC, !PrintGCDetails, gclog_or_tty);
TraceCollectorStats tcs(counters());
switch (op) {
case CMS_op_checkpointRootsInitial: {
checkpointRootsInitial(true); // asynch
if (PrintGC) {
_cmsGen->printOccupancy("initial-mark");
}
break;
}
case CMS_op_checkpointRootsFinal: {
checkpointRootsFinal(true, // asynch
false, // !clear_all_soft_refs
false); // !init_mark_was_synchronous
if (PrintGC) {
_cmsGen->printOccupancy("remark");
}
break;
}
default:
fatal("No such CMS_op");
}
}
それは確かにあなたが得ているもののように見えます. 私はこのコードを解釈するのが得意ではありませんが、あなたが見ているのは、現在のヒープ使用量とそれに続く括弧内のコミットされたヒープ サイズを示す単なるログ行だと思います。基本的に同じ情報ですが、ガベージ コレクションの前に使用されていません。