comparison src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp @ 10372:e72f7eecc96d

8013895: G1: G1SummarizeRSetStats output on Linux needs improvemen Summary: Fixed the output of G1SummarizeRSetStats: too small datatype for the number of concurrently processed cards, added concurrent remembered set thread time retrieval for Linux and Windows (BSD uses os::elapsedTime() now), and other cleanup. The information presented during VM operation is now relative to the previous output, not always cumulative if G1SummarizeRSetStatsPeriod > 0. At VM exit, the code prints a cumulative summary. Reviewed-by: johnc, jwilhelm
author tschatzl
date Tue, 28 May 2013 09:32:06 +0200
parents 001ec9515f84
children 3a4805ad0005
comparison
equal deleted inserted replaced
10371:c20186fa611b 10372:e72f7eecc96d
3537 // Fill TLAB's and such 3537 // Fill TLAB's and such
3538 ensure_parsability(true); 3538 ensure_parsability(true);
3539 } 3539 }
3540 3540
3541 void G1CollectedHeap::gc_epilogue(bool full /* Ignored */) { 3541 void G1CollectedHeap::gc_epilogue(bool full /* Ignored */) {
3542
3543 if (G1SummarizeRSetStats &&
3544 (G1SummarizeRSetStatsPeriod > 0) &&
3545 // we are at the end of the GC. Total collections has already been increased.
3546 ((total_collections() - 1) % G1SummarizeRSetStatsPeriod == 0)) {
3547 g1_rem_set()->print_periodic_summary_info();
3548 }
3549
3542 // FIXME: what is this about? 3550 // FIXME: what is this about?
3543 // I'm ignoring the "fill_newgen()" call if "alloc_event_enabled" 3551 // I'm ignoring the "fill_newgen()" call if "alloc_event_enabled"
3544 // is set. 3552 // is set.
3545 COMPILER2_PRESENT(assert(DerivedPointerTable::is_empty(), 3553 COMPILER2_PRESENT(assert(DerivedPointerTable::is_empty(),
3546 "derived pointer present")); 3554 "derived pointer present"));
4089 // We must call G1MonitoringSupport::update_sizes() in the same scoping level 4097 // We must call G1MonitoringSupport::update_sizes() in the same scoping level
4090 // as an active TraceMemoryManagerStats object (i.e. before the destructor for the 4098 // as an active TraceMemoryManagerStats object (i.e. before the destructor for the
4091 // TraceMemoryManagerStats is called) so that the G1 memory pools are updated 4099 // TraceMemoryManagerStats is called) so that the G1 memory pools are updated
4092 // before any GC notifications are raised. 4100 // before any GC notifications are raised.
4093 g1mm()->update_sizes(); 4101 g1mm()->update_sizes();
4094 }
4095
4096 if (G1SummarizeRSetStats &&
4097 (G1SummarizeRSetStatsPeriod > 0) &&
4098 (total_collections() % G1SummarizeRSetStatsPeriod == 0)) {
4099 g1_rem_set()->print_summary_info();
4100 } 4102 }
4101 4103
4102 // It should now be safe to tell the concurrent mark thread to start 4104 // It should now be safe to tell the concurrent mark thread to start
4103 // without its logging output interfering with the logging output 4105 // without its logging output interfering with the logging output
4104 // that came from the pause. 4106 // that came from the pause.