8267836: Separate eager reclaim remembered set threshold from G1RSetSparseRegionEntries

Reviewed-by: sjohanss, lkorinth
This commit is contained in:
Thomas Schatzl 2021-06-02 09:31:59 +00:00
parent bba3728e23
commit 2d494bffff
4 changed files with 14 additions and 2 deletions

View File

@ -49,7 +49,14 @@ void G1Arguments::initialize_alignments() {
// size, but the heap size should be aligned with the region size. To get
// around this we use the unaligned values for the heap.
HeapRegion::setup_heap_region_size(MaxHeapSize);
// The remembered set needs the heap regions set up.
HeapRegionRemSet::setup_remset_size();
// Needs remembered set initialization as the ergonomics are based
// on it.
if (FLAG_IS_DEFAULT(G1EagerReclaimRemSetThreshold)) {
FLAG_SET_ERGO(G1EagerReclaimRemSetThreshold, G1RSetSparseRegionEntries);
}
SpaceAlignment = HeapRegion::GrainBytes;
HeapAlignment = calculate_heap_alignment(SpaceAlignment);

View File

@ -2659,7 +2659,7 @@ bool G1CollectedHeap::is_potential_eager_reclaim_candidate(HeapRegion* r) const
HeapRegionRemSet* rem_set = r->rem_set();
return G1EagerReclaimHumongousObjectsWithStaleRefs ?
rem_set->occupancy_less_or_equal_than(G1RSetSparseRegionEntries) :
rem_set->occupancy_less_or_equal_than(G1EagerReclaimRemSetThreshold) :
G1EagerReclaimHumongousObjects && rem_set->is_empty();
}

View File

@ -1284,7 +1284,7 @@ class G1MergeHeapRootsTask : public AbstractGangTask {
return false;
}
guarantee(r->rem_set()->occupancy_less_or_equal_than(G1RSetSparseRegionEntries),
guarantee(r->rem_set()->occupancy_less_or_equal_than(G1EagerReclaimRemSetThreshold),
"Found a not-small remembered set here. This is inconsistent with previous assumptions.");
_cl.dump_rem_set_for_region(r);

View File

@ -240,6 +240,11 @@
"Try to reclaim dead large objects that have a few stale " \
"references at every young GC.") \
\
product(uint, G1EagerReclaimRemSetThreshold, 0, EXPERIMENTAL, \
"Maximum number of remembered set entries a humongous region " \
"otherwise eligible for eager reclaim may have to be a candidate "\
"for eager reclaim. Will be selected ergonomically by default.") \
\
product(size_t, G1RebuildRemSetChunkSize, 256 * K, EXPERIMENTAL, \
"Chunk size used for rebuilding the remembered set.") \
range(4 * K, 32 * M) \