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(); |