RFR: 8257774: G1: Trigger collect when free region count drops below threshold to prevent evacuation failures [v10]

Stefan Johansson sjohanss at openjdk.java.net
Mon Jun 7 08:42:07 UTC 2021

On Wed, 2 Jun 2021 19:48:07 GMT, Aditya Mandaleeka <adityam at openjdk.org> wrote:

>> _This PR picks up from [this previous PR](https://github.com/openjdk/jdk/pull/1650) by @charliegracie._
>> I won't repeat the full description from the prior PR, but the general idea is to add the notion of a "proactive GC" to G1 which gets triggered in the slow allocation path if the number of free regions drops below the amount that would be required to complete a GC if it happened at that moment. The threshold is based on the survival rates from eden and survivor spaces along with the space required for tenured space evacuations.
>> There are a couple of outstanding issues/questions known:
>> - [Update: This has been resolved] _Interaction with GCLocker_: In the case where we determine that a proactive GC is required and GC locker is active, we don't allow the young gen to expand (instead threads will stall). @tschatzl raised this and suggested that it should be discussed as part of the review.
>> - [Update: This has been resolved] _Disable proactive GC heuristic during initialization_: I ran into an issue in testing where code in the universe initialization codepath was tripping the proactive GC heuristic, leading to a GC being triggered before the VM has finished initialization. I need to find a good way to prevent this from happening. There may already be a mechanism for this, but I couldn't find one so I added a temporary placeholder (`zzinit_complete`) just to unblock testing.
> Aditya Mandaleeka has updated the pull request incrementally with one additional commit since the last revision:
>   Revert test change and instead disable preventive GC for evac failure cases.

All outstanding questions are answered and we should be ready to integrate. 

Depending on who integrates first, there might be some small merge conflict with my new GC cause for Full collections (PR #4357). But it should be very easy to fix. 

Thanks for being patient and addressing all our comments in this fairly long review process.


Marked as reviewed by sjohanss (Reviewer).

PR: https://git.openjdk.java.net/jdk/pull/3143

More information about the hotspot-gc-dev mailing list