< prev index next >

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

Print this page

        

*** 3559,3568 **** --- 3559,3571 ---- *card_ptr = CardTableModRefBS::dirty_card_val(); _dcq.enqueue(card_ptr); } } } + assert(hrrs.n_yielded() == r->rem_set()->occupied(), + "Remembered set hash maps out of sync, cur: " SIZE_FORMAT " entries, next: " SIZE_FORMAT " entries", + hrrs.n_yielded(), r->rem_set()->occupied()); r->rem_set()->clear_locked(); } assert(r->rem_set()->is_empty(), "At this point any humongous candidate remembered set must be empty."); } _total_humongous++;
*** 3846,3855 **** --- 3849,3865 ---- double time_remaining_ms = g1_policy()->finalize_young_cset_part(target_pause_time_ms); g1_policy()->finalize_old_cset_part(time_remaining_ms); evacuation_info.set_collectionset_regions(g1_policy()->cset_region_length()); + // Make sure the remembered sets are up to date. This needs to be + // done before register_humongous_regions_with_cset(), because the + // remembered sets are used there to choose eager reclaim candidates. + // If the remembered sets are not up to date we might miss some + // entries that need to be handled. + g1_rem_set()->cleanupHRRS(); + register_humongous_regions_with_cset(); assert(check_cset_fast_test(), "Inconsistency in the InCSetState table."); _cm->note_start_of_gc();
< prev index next >