RFR(S): 8048179: Early reclaim of large objects that are referenced by a few objects
Thomas Schatzl
thomas.schatzl at oracle.com
Thu Dec 18 15:43:25 UTC 2014
Hi Bengt,
On Wed, 2014-12-17 at 11:23 +0100, Bengt Rutisson wrote:
>
> Hi Thomas,
>
> New webrev looks good.
>
> Two questions:
>
> What do you think about changing
> OtherRegionsTable::occupancy_less_or_equal_than() to be something like:
>
> bool OtherRegionsTable::occupancy_less_or_equal_than(size_t limit) const {
> if (limit <= (size_t)G1RSetSparseRegionEntries) {
> return occ_coarse() == 0 && _first_all_fine_prts == NULL &&
> occ_sparse() <= limit;
> } else {
> Unimplemented();
> // Current uses of this method only use values less than
> G1RSetSparseRegionEntries for the limit.
> // If we want to use it for larger values we need to implement the
> more expensive iteration over
> // the remembered set to check the limit.
> return false;
> }
> }
>
> I think the Unimplemented() check communicates that it is this method
> that is having a problem, not the caller of the method.
>
I do not see either better than the other - in any case the VM will
crash with an error message. I changed it to this version anyway.
> The second question is about the flag name. I realize that
> G1ReclaimDeadHumongousObjectsWithStaleRefsAtYoungGC is correct and that
> it is in analogy with G1ReclaimDeadHumongousObjectsAtYoungGC. But it is
> very long. Can we find some way of shortening it? I know it was me who
> suggested to include "WithStaleRefs" in the name...
>
> Maybe the flags could be called G1EagerReclaimOfHumObjs and
> G1EagerReclaimOfHumObjsWithStaleRefs ?
I do not like abbreviations in flag names; Bengt and me discussed
offline and came up with the following new names for the flags:
G1EagerReclaimHumongousObjects
G1EagerReclaimHumongousObjectsWithStaleRefs
G1TraceEagerReclaimHumongousObjects
I.e. remove the "Dead" because the GC only ever reclaims dead objects
anyway, and remove the "AtYoungGC" because it seems somewhat superfluous
too: we can already reclaim humongous objects at all other GCs (marking,
full gcs), there would be nothing "eager" about it if it were only done
in these situations.
I am fine with adding "AtYoungGC" again if someone objects to that.
Any objections or alternatives?
Webrev:
http://cr.openjdk.java.net/~tschatzl/8048179/webrev.2/
Webrev diff:
http://cr.openjdk.java.net/~tschatzl/8048179/webrev.1_to_2/
Thanks,
Thomas
More information about the hotspot-gc-dev
mailing list