--- a/hotspot/src/share/vm/gc_interface/collectedHeap.cpp Fri Feb 27 15:30:47 2009 -0800
+++ b/hotspot/src/share/vm/gc_interface/collectedHeap.cpp Mon Mar 02 16:37:04 2009 -0800
@@ -294,3 +294,29 @@
ThreadLocalAllocBuffer::resize_all_tlabs();
}
}
+
+void CollectedHeap::pre_full_gc_dump() {
+ if (HeapDumpBeforeFullGC) {
+ TraceTime tt("Heap Dump: ", 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);
+ VM_GC_HeapInspection inspector(gclog_or_tty, false /* ! full gc */, false /* ! prologue */);
+ inspector.doit();
+ }
+}
+
+void CollectedHeap::post_full_gc_dump() {
+ if (HeapDumpAfterFullGC) {
+ TraceTime tt("Heap Dump", PrintGCDetails, false, gclog_or_tty);
+ HeapDumper::dump_heap();
+ }
+ if (PrintClassHistogramAfterFullGC) {
+ TraceTime tt("Class Histogram", PrintGCDetails, true, gclog_or_tty);
+ VM_GC_HeapInspection inspector(gclog_or_tty, false /* ! full gc */, false /* ! prologue */);
+ inspector.doit();
+ }
+}