8151696: Print all regions on trace level to get same behavior as old PrintHeapAtGCExtended
Reviewed-by: brutisso, jwilhelm
--- a/hotspot/src/share/vm/gc/g1/g1CollectedHeap.cpp Mon Mar 14 09:10:42 2016 +0100
+++ b/hotspot/src/share/vm/gc/g1/g1CollectedHeap.cpp Mon Mar 14 09:11:21 2016 +0100
@@ -1229,6 +1229,7 @@
ResourceMark rm;
print_heap_before_gc();
+ print_heap_regions();
trace_heap_before_gc(gc_tracer);
size_t metadata_prev_used = MetaspaceAux::used_bytes();
@@ -1447,6 +1448,7 @@
heap_transition.print();
print_heap_after_gc();
+ print_heap_regions();
trace_heap_after_gc(gc_tracer);
post_full_gc_dump(gc_timer);
@@ -2718,6 +2720,14 @@
return false; // keep some compilers happy
}
+void G1CollectedHeap::print_heap_regions() const {
+ LogHandle(gc, heap, region) log;
+ if (log.is_trace()) {
+ ResourceMark rm;
+ print_regions_on(log.trace_stream());
+ }
+}
+
void G1CollectedHeap::print_on(outputStream* st) const {
st->print(" %-20s", "garbage-first heap");
st->print(" total " SIZE_FORMAT "K, used " SIZE_FORMAT "K",
@@ -2738,11 +2748,7 @@
MetaspaceAux::print_on(st);
}
-void G1CollectedHeap::print_extended_on(outputStream* st) const {
- print_on(st);
-
- // Print the per-region information.
- st->cr();
+void G1CollectedHeap::print_regions_on(outputStream* st) const {
st->print_cr("Heap Regions: E=young(eden), S=young(survivor), O=old, "
"HS=humongous(starts), HC=humongous(continues), "
"CS=collection set, F=free, A=archive, TS=gc time stamp, "
@@ -2752,6 +2758,13 @@
heap_region_iterate(&blk);
}
+void G1CollectedHeap::print_extended_on(outputStream* st) const {
+ print_on(st);
+
+ // Print the per-region information.
+ print_regions_on(st);
+}
+
void G1CollectedHeap::print_on_error(outputStream* st) const {
this->CollectedHeap::print_on_error(st);
@@ -3203,6 +3216,7 @@
wait_for_root_region_scanning();
print_heap_before_gc();
+ print_heap_regions();
trace_heap_before_gc(_gc_tracer_stw);
_verifier->verify_region_sets_optional();
@@ -3535,6 +3549,7 @@
TASKQUEUE_STATS_ONLY(reset_taskqueue_stats());
print_heap_after_gc();
+ print_heap_regions();
trace_heap_after_gc(_gc_tracer_stw);
// We must call G1MonitoringSupport::update_sizes() in the same scoping level
--- a/hotspot/src/share/vm/gc/g1/g1CollectedHeap.hpp Mon Mar 14 09:10:42 2016 +0100
+++ b/hotspot/src/share/vm/gc/g1/g1CollectedHeap.hpp Mon Mar 14 09:11:21 2016 +0100
@@ -1470,7 +1470,11 @@
G1EvacSummary create_g1_evac_summary(G1EvacStats* stats);
// Printing
+private:
+ void print_heap_regions() const;
+ void print_regions_on(outputStream* st) const;
+public:
virtual void print_on(outputStream* st) const;
virtual void print_extended_on(outputStream* st) const;
virtual void print_on_error(outputStream* st) const;
--- a/hotspot/src/share/vm/logging/logPrefix.hpp Mon Mar 14 09:10:42 2016 +0100
+++ b/hotspot/src/share/vm/logging/logPrefix.hpp Mon Mar 14 09:11:21 2016 +0100
@@ -52,6 +52,7 @@
LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, ergo, heap)) \
LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, ergo, ihop)) \
LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, heap)) \
+ LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, heap, region)) \
LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, freelist)) \
LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, ihop)) \
LOG_PREFIX(GCId::print_prefix, LOG_TAGS(gc, liveness)) \