RFR: 8257774: G1: Trigger collect when free region count drops below threshold to prevent evacuation failures [v8]
Aditya Mandaleeka
adityam at openjdk.java.net
Wed May 26 06:34:46 UTC 2021
> _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:
Make ProactiveGC JVM flag a diagnostic option.
-------------
Changes:
- all: https://git.openjdk.java.net/jdk/pull/3143/files
- new: https://git.openjdk.java.net/jdk/pull/3143/files/6325a729..a2b0b677
Webrevs:
- full: https://webrevs.openjdk.java.net/?repo=jdk&pr=3143&range=07
- incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=3143&range=06-07
Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod
Patch: https://git.openjdk.java.net/jdk/pull/3143.diff
Fetch: git fetch https://git.openjdk.java.net/jdk pull/3143/head:pull/3143
PR: https://git.openjdk.java.net/jdk/pull/3143
More information about the hotspot-gc-dev
mailing list