< prev index next >
src/share/vm/gc/g1/g1CollectedHeap.cpp
Print this page
@@ -3559,10 +3559,13 @@
*card_ptr = CardTableModRefBS::dirty_card_val();
_dcq.enqueue(card_ptr);
}
}
}
+ guarantee(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,10 +3849,15 @@
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(), otherwise
+ // 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 >