Mercurial > hg > truffle
diff src/share/vm/memory/genCollectedHeap.cpp @ 615:c6c601a0f2d6
6797870: Add -XX:+{HeapDump,PrintClassHistogram}{Before,After}FullGC
Summary: Call newly created CollectedHeap::dump_{pre,post}_full_gc before and after every stop-world full collection cycle on GenCollectedHeap and ParallelScavengeHeap. (Support for G1CollectedHeap forthcoming under CR 6810861.) Small modifications to existing heap dumping and class histogram implementation, especially to allow multiple on-the-fly histos/dumps by the VM thread during a single safepoint.
Reviewed-by: jmasa, alanb, mchung
author | ysr |
---|---|
date | Mon, 02 Mar 2009 16:37:04 -0800 |
parents | 05c6d52fa7a9 |
children | 7bb995fbd3c0 660978a2a31a |
line wrap: on
line diff
--- a/src/share/vm/memory/genCollectedHeap.cpp Fri Feb 27 15:30:47 2009 -0800 +++ b/src/share/vm/memory/genCollectedHeap.cpp Mon Mar 02 16:37:04 2009 -0800 @@ -456,6 +456,9 @@ int max_level_collected = starting_level; for (int i = starting_level; i <= max_level; i++) { if (_gens[i]->should_collect(full, size, is_tlab)) { + if (i == n_gens() - 1) { // a major collection is to happen + pre_full_gc_dump(); // do any pre full gc dumps + } // Timer for individual generations. Last argument is false: no CR TraceTime t1(_gens[i]->short_name(), PrintGCDetails, false, gclog_or_tty); TraceCollectorStats tcs(_gens[i]->counters()); @@ -573,6 +576,10 @@ // a whole heap collection. complete = complete || (max_level_collected == n_gens() - 1); + if (complete) { // We did a "major" collection + post_full_gc_dump(); // do any post full gc dumps + } + if (PrintGCDetails) { print_heap_change(gch_prev_used);