--- old/src/share/vm/gc/g1/heapRegion.cpp 2016-07-15 15:55:07.449128596 +0200 +++ new/src/share/vm/gc/g1/heapRegion.cpp 2016-07-15 15:55:07.359125910 +0200 @@ -167,7 +167,7 @@ init_top_at_mark_start(); } -void HeapRegion::hr_clear(bool par, bool clear_space, bool locked) { +void HeapRegion::hr_clear(bool keep_remset, bool clear_space, bool locked) { assert(_humongous_start_region == NULL, "we should have already filtered out humongous regions"); assert(!in_collection_set(), @@ -179,15 +179,14 @@ set_free(); reset_pre_dummy_top(); - if (!par) { - // If this is parallel, this will be done later. - HeapRegionRemSet* hrrs = rem_set(); + if (!keep_remset) { if (locked) { - hrrs->clear_locked(); + rem_set()->clear_locked(); } else { - hrrs->clear(); + rem_set()->clear(); } } + zero_marked_bytes(); init_top_at_mark_start();