src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp

changeset 7648
f97f21d8d58c
parent 7647
80ac3ee51955
child 7651
c132be0fb74d
equal deleted inserted replaced
7647:80ac3ee51955 7648:f97f21d8d58c
1875 _expand_heap_after_alloc_failure(true), 1875 _expand_heap_after_alloc_failure(true),
1876 _surviving_young_words(NULL), 1876 _surviving_young_words(NULL),
1877 _old_marking_cycles_started(0), 1877 _old_marking_cycles_started(0),
1878 _old_marking_cycles_completed(0), 1878 _old_marking_cycles_completed(0),
1879 _concurrent_cycle_started(false), 1879 _concurrent_cycle_started(false),
1880 _heap_summary_sent(false),
1880 _in_cset_fast_test(), 1881 _in_cset_fast_test(),
1881 _dirty_cards_region_list(NULL), 1882 _dirty_cards_region_list(NULL),
1882 _worker_cset_start_region(NULL), 1883 _worker_cset_start_region(NULL),
1883 _worker_cset_start_region_time_stamp(NULL), 1884 _worker_cset_start_region_time_stamp(NULL),
1884 _gc_timer_stw(new (ResourceObj::C_HEAP, mtGC) STWGCTimer()), 1885 _gc_timer_stw(new (ResourceObj::C_HEAP, mtGC) STWGCTimer()),
2445 } 2446 }
2446 2447
2447 _gc_timer_cm->register_gc_end(); 2448 _gc_timer_cm->register_gc_end();
2448 _gc_tracer_cm->report_gc_end(_gc_timer_cm->gc_end(), _gc_timer_cm->time_partitions()); 2449 _gc_tracer_cm->report_gc_end(_gc_timer_cm->gc_end(), _gc_timer_cm->time_partitions());
2449 2450
2451 // Clear state variables to prepare for the next concurrent cycle.
2450 _concurrent_cycle_started = false; 2452 _concurrent_cycle_started = false;
2453 _heap_summary_sent = false;
2451 } 2454 }
2452 } 2455 }
2453 2456
2454 void G1CollectedHeap::trace_heap_after_concurrent_cycle() { 2457 void G1CollectedHeap::trace_heap_after_concurrent_cycle() {
2455 if (_concurrent_cycle_started) { 2458 if (_concurrent_cycle_started) {
2456 trace_heap_after_gc(_gc_tracer_cm); 2459 // This function can be called when:
2460 // the cleanup pause is run
2461 // the concurrent cycle is aborted before the cleanup pause.
2462 // the concurrent cycle is aborted after the cleanup pause,
2463 // but before the concurrent cycle end has been registered.
2464 // Make sure that we only send the heap information once.
2465 if (!_heap_summary_sent) {
2466 trace_heap_after_gc(_gc_tracer_cm);
2467 _heap_summary_sent = true;
2468 }
2457 } 2469 }
2458 } 2470 }
2459 2471
2460 G1YCType G1CollectedHeap::yc_type() { 2472 G1YCType G1CollectedHeap::yc_type() {
2461 bool is_young = g1_policy()->gcs_are_young(); 2473 bool is_young = g1_policy()->gcs_are_young();

mercurial