--- old/src/share/vm/gc/g1/g1CollectedHeap.cpp 2015-11-12 09:44:34.567698175 +0100 +++ new/src/share/vm/gc/g1/g1CollectedHeap.cpp 2015-11-12 09:44:34.459693962 +0100 @@ -3561,6 +3561,9 @@ } } } + 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."); @@ -3848,6 +3851,11 @@ 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.");