Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>I've searched for "secs" in the source code of JDK 1.6 update 23 (most recent 1.6 version I could find it for) and for regex "[^"]*->[^"]*" through the GC code folders in hope of finding a lead. I've also searched through the OpenJDK 1.7 code. Then I tried searching the entire HotSpot folder for "[^"]*->[^"]*"?.*secs. Yet, the only line of GC logging I've found that seems remotely related to what you're seeing is</p> <pre><code>gclog_or_tty-&gt;print("[%s-concurrent-%s: %3.3f/%3.3f secs]", _collector-&gt;cmsGen()-&gt;short_name(), _phase, _collector-&gt;timerValue(), _wallclock.seconds()); </code></pre> <p>That's in concurrentMarkSweepGeneration.cpp. It doesn't look even close to the format you've seen. Either I'm not searching very well, or something changed in between update 23 and update 25 regarding GC logging.</p> <p>If anyone has a clearer idea of where to look or what to search on, I'll be glad to oblige.</p> <p>EDIT: wait, found something starting at line 827 of concurrentMarkSweepGeneration.cpp:</p> <pre><code>void ConcurrentMarkSweepGeneration::printOccupancy(const char *s) { GenCollectedHeap* gch = GenCollectedHeap::heap(); if (PrintGCDetails) { if (Verbose) { gclog_or_tty-&gt;print(" [%d %s-%s: "SIZE_FORMAT"("SIZE_FORMAT")]", level(), short_name(), s, used(), capacity()); } else { gclog_or_tty-&gt;print(" [%d %s-%s: "SIZE_FORMAT"K("SIZE_FORMAT"K)]", level(), short_name(), s, used() / K, capacity() / K); } } if (Verbose) { gclog_or_tty-&gt;print(" "SIZE_FORMAT"("SIZE_FORMAT")", gch-&gt;used(), gch-&gt;capacity()); } else { gclog_or_tty-&gt;print(" "SIZE_FORMAT"K("SIZE_FORMAT"K)", gch-&gt;used() / K, gch-&gt;capacity() / K); } } </code></pre> <p>And that function's being called only here:</p> <pre><code>void CMSCollector::do_CMS_operation(CMS_op_type op) { gclog_or_tty-&gt;date_stamp(PrintGC &amp;&amp; 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-&gt;printOccupancy("initial-mark"); } break; } case CMS_op_checkpointRootsFinal: { checkpointRootsFinal(true, // asynch false, // !clear_all_soft_refs false); // !init_mark_was_synchronous if (PrintGC) { _cmsGen-&gt;printOccupancy("remark"); } break; } default: fatal("No such CMS_op"); } } </code></pre> <p>It sure looks like what you're getting. I'm not so good at interpreting this code, but I'd say what you're seeing is simply a log line showing the current heap use followed by the committed heap size in parentheses, nothing more. Basically the same info but without the use before garbage collection.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload