[10] RFR (M/L): 8137099: G1 needs to "upgrade" GC within the safepoint if it can't allocate during that safepoint to avoid OoME

Thomas Schatzl thomas.schatzl at oracle.com
Tue Jan 9 12:18:49 UTC 2018



On Tue, 2018-01-09 at 11:11 +0100, Thomas Schatzl wrote:
> Hi again,
> > > Erik Duveblad also noted that this change contains some slight
> > > behavioral change in when a collection is started. I.e.
> > > previously TLAB allocation by itself could not cause a GC. Since
> > > this change is already quite big, he suggested to fix this in a
> > > follow-up, and push them together.
> Some detail got lost here: previously TLAB allocation could not
> result in a Full GC, it can now (that maximally compacting GC).
> Its side effects need to be investigated a bit more.

The only side effect would be that these collections would not be
accounted in the GC overhead limit mechanism (go OOME when doing too
many GCs in a row).

However, G1 never implemented the GC overhead limit mechanism. So this
behavioral change is a non-issue because it has no visible impact. I
filed RFE JDK-8194821 for that.

Serial and CMS have this issue: they do not account GCs caused by TLAB
allocation at all in the GC overhead limit. Filed JDK-8194823.

Only Parallel GC seems to do the right thing by not doing any GC during
TLAB allocation.


More information about the hotspot-gc-dev mailing list