< prev index next >

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

Print this page
rev 12508 : imported patch 8162104-use-is_in_cset-instead-of-obj_in_cs
rev 12512 : imported patch 8155094-logging-for-long-lasting-methods
rev 12513 : [mq]: 8155094-kim-review

*** 1376,1389 **** GCTraceTime(Debug, gc)("Clear Bitmap for Verification"); _cm->clear_prev_bitmap(workers()); } _verifier->check_bitmaps("Full GC End"); ! // Start a new incremental collection set for the next pause ! collection_set()->start_incremental_building(); ! ! clear_cset_fast_test(); _allocator->init_mutator_alloc_region(); g1_policy()->record_full_collection_end(); --- 1376,1388 ---- GCTraceTime(Debug, gc)("Clear Bitmap for Verification"); _cm->clear_prev_bitmap(workers()); } _verifier->check_bitmaps("Full GC End"); ! double start = os::elapsedTime(); ! start_new_collection_set(); ! g1_policy()->phase_times()->record_start_new_cset_time_ms((os::elapsedTime() - start) * 1000.0); _allocator->init_mutator_alloc_region(); g1_policy()->record_full_collection_end();
*** 2692,2704 **** --- 2691,2706 ---- } void G1CollectedHeap::gc_prologue(bool full /* Ignored */) { // always_do_update_barrier = false; assert(InlineCacheBuffer::is_empty(), "should have cleaned up ICBuffer"); + + double start = os::elapsedTime(); // Fill TLAB's and such accumulate_statistics_all_tlabs(); ensure_parsability(true); + g1_policy()->phase_times()->record_prepare_tlab_time_ms((os::elapsedTime() - start) * 1000.0); g1_rem_set()->print_periodic_summary_info("Before GC RS summary", total_collections()); } void G1CollectedHeap::gc_epilogue(bool full) {
*** 2711,2721 **** --- 2713,2726 ---- #if defined(COMPILER2) || INCLUDE_JVMCI assert(DerivedPointerTable::is_empty(), "derived pointer present"); #endif // always_do_update_barrier = true; + double start = os::elapsedTime(); resize_all_tlabs(); + g1_policy()->phase_times()->record_resize_tlab_time_ms((os::elapsedTime() - start) * 1000.0); + allocation_context_stats().update(full); // We have just completed a GC. Update the soft reference // policy with the new heap occupancy Universe::update_heap_info_at_gc();
*** 2994,3003 **** --- 2999,3017 ---- _hr_printer->cset(r); return false; } }; + void G1CollectedHeap::start_new_collection_set() { + collection_set()->start_incremental_building(); + + clear_cset_fast_test(); + + guarantee(_eden.length() == 0, "eden should have been cleared"); + g1_policy()->transfer_survivors_to_cset(survivor()); + } + bool G1CollectedHeap::do_collection_pause_at_safepoint(double target_pause_time_ms) { assert_at_safepoint(true /* should_be_vm_thread */); guarantee(!is_gc_active(), "collection is not reentrant");
*** 3196,3212 **** record_obj_copy_mem_stats(); _survivor_evac_stats.adjust_desired_plab_sz(); _old_evac_stats.adjust_desired_plab_sz(); ! // Start a new incremental collection set for the next pause. ! collection_set()->start_incremental_building(); ! ! clear_cset_fast_test(); ! ! guarantee(_eden.length() == 0, "eden should have been cleared"); ! g1_policy()->transfer_survivors_to_cset(survivor()); if (evacuation_failed()) { set_used(recalculate_used()); if (_archive_allocator != NULL) { _archive_allocator->clear_used(); --- 3210,3220 ---- record_obj_copy_mem_stats(); _survivor_evac_stats.adjust_desired_plab_sz(); _old_evac_stats.adjust_desired_plab_sz(); ! start_new_collection_set(); if (evacuation_failed()) { set_used(recalculate_used()); if (_archive_allocator != NULL) { _archive_allocator->clear_used();
*** 4520,4530 **** --- 4528,4540 ---- purge_code_root_memory(); redirty_logged_cards(); #if defined(COMPILER2) || INCLUDE_JVMCI + double start = os::elapsedTime(); DerivedPointerTable::update_pointers(); + g1_policy()->phase_times()->record_derived_pointer_table_update_time((os::elapsedTime() - start) * 1000.0); #endif g1_policy()->print_age_table(); } void G1CollectedHeap::record_obj_copy_mem_stats() {
< prev index next >