-
Enhancement
-
Resolution: Fixed
-
P4
-
None
-
master
In G1, during allocation of an object currently there are two locations where a GC can occur:
- during TLAB allocation (i.e. refill)
- during the following allocation outside TLAB
This behavior breaks UseGCOverheadLimit support planned in JDK-8212084: if the overhead limit triggers because of TLAB allocation, returning null, the following allocation outside tlab may succeed (due to how UseGCOverheadLimit works, one is required to actually perform the collections), effectively making this feature non-working.
Fix is to not allow a garbage collection during TLAB allocation, deferring to the following outside-tlab allocation.
Still, TLAB allocation should still try to allocate a new allocation region.
- during TLAB allocation (i.e. refill)
- during the following allocation outside TLAB
This behavior breaks UseGCOverheadLimit support planned in JDK-8212084: if the overhead limit triggers because of TLAB allocation, returning null, the following allocation outside tlab may succeed (due to how UseGCOverheadLimit works, one is required to actually perform the collections), effectively making this feature non-working.
Fix is to not allow a garbage collection during TLAB allocation, deferring to the following outside-tlab allocation.
Still, TLAB allocation should still try to allocate a new allocation region.
- blocks
-
JDK-8212084 G1: Implement UseGCOverheadLimit
-
- Open
-
- links to
-
Commit(master)
openjdk/jdk/027aea9d
-
Review(master)
openjdk/jdk/27932