6810861: G1: support -XX:+{PrintClassHistogram,HeapDump}{Before,After}FullGC
Summary: Call {pre,post}_full_gc_dump() before and after a STW full gc of G1CollectedHeap. Also adjusted the prefix message, including the addition of missing whitespace.
Reviewed-by: brutisso, tonyp
--- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Fri Aug 19 09:30:59 2011 +0200
+++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Mon Aug 22 12:30:06 2011 -0700
@@ -1227,6 +1227,7 @@
/* option */ VerifyOption_G1UsePrevMarking);
}
+ pre_full_gc_dump();
COMPILER2_PRESENT(DerivedPointerTable::clear());
@@ -1401,6 +1402,7 @@
Universe::print_heap_after_gc();
}
g1mm()->update_counters();
+ post_full_gc_dump();
return true;
}
--- a/hotspot/src/share/vm/gc_interface/collectedHeap.cpp Fri Aug 19 09:30:59 2011 +0200
+++ b/hotspot/src/share/vm/gc_interface/collectedHeap.cpp Mon Aug 22 12:30:06 2011 -0700
@@ -404,13 +404,13 @@
void CollectedHeap::pre_full_gc_dump() {
if (HeapDumpBeforeFullGC) {
- TraceTime tt("Heap Dump: ", PrintGCDetails, false, gclog_or_tty);
+ TraceTime tt("Heap Dump (before full gc): ", PrintGCDetails, false, gclog_or_tty);
// We are doing a "major" collection and a heap dump before
// major collection has been requested.
HeapDumper::dump_heap();
}
if (PrintClassHistogramBeforeFullGC) {
- TraceTime tt("Class Histogram: ", PrintGCDetails, true, gclog_or_tty);
+ TraceTime tt("Class Histogram (before full gc): ", PrintGCDetails, true, gclog_or_tty);
VM_GC_HeapInspection inspector(gclog_or_tty, false /* ! full gc */, false /* ! prologue */);
inspector.doit();
}
@@ -418,11 +418,11 @@
void CollectedHeap::post_full_gc_dump() {
if (HeapDumpAfterFullGC) {
- TraceTime tt("Heap Dump", PrintGCDetails, false, gclog_or_tty);
+ TraceTime tt("Heap Dump (after full gc): ", PrintGCDetails, false, gclog_or_tty);
HeapDumper::dump_heap();
}
if (PrintClassHistogramAfterFullGC) {
- TraceTime tt("Class Histogram", PrintGCDetails, true, gclog_or_tty);
+ TraceTime tt("Class Histogram (after full gc): ", PrintGCDetails, true, gclog_or_tty);
VM_GC_HeapInspection inspector(gclog_or_tty, false /* ! full gc */, false /* ! prologue */);
inspector.doit();
}