RFR: 8257774: G1: Trigger collect when free region count drops below threshold to prevent evacuation failures
Stefan Johansson
sjohanss at openjdk.java.net
Fri Jun 4 09:42:01 UTC 2021
On Fri, 4 Jun 2021 04:11:34 GMT, Kirk Pepperdine <kirk at kodewerk.com> wrote:
> Traditionally in the logs you would see that the current collection is ?closed out? and a new record is started for the ?new? full collection.
>
This will still be the case, saying that the young collection is upgraded is a bit misleading (but it is called that in the code). What we are discussing is to add a new specific cause used by the Full GCs. Right now you get:
[13,276s][info][gc ] GC(71) Pause Young (Normal) (G1 Evacuation Pause) 3096M->3096M(3100M) 1,159ms
[13,644s][info][gc ] GC(72) Pause Full (G1 Evacuation Pause) 3096M->3096M(3100M) 368,157ms
With this change you would get:
[11,254s][info][gc ] GC(98) Pause Young (Normal) (G1 Preventive Collection) 3094M->3096M(3100M) 4,513ms
[11,624s][info][gc ] GC(99) Pause Full (G1 Preventive Collection) 3096M->3093M(3100M) 369,918ms
Which looks more strange because the Full GC is not preventive. So the idea is to add a separate cause used by any Full GC triggered by a young collection not generating enough free memory, like this:
[18,454s][info][gc ] GC(84) Pause Young (Normal) (G1 Evacuation Pause) 3096M->3096M(3100M) 1,312ms
[18,815s][info][gc ] GC(85) Pause Full (G1 Compaction Pause) 3096M->3096M(3100M) 360,737ms
And for preventive collections it would be:
[18,454s][info][gc ] GC(84) Pause Young (Normal) (G1 Preventive Collection) 3096M->3096M(3100M) 1,312ms
[18,815s][info][gc ] GC(85) Pause Full (G1 Compaction Pause) 3096M->3096M(3100M) 360,737ms
-------------
PR: https://git.openjdk.java.net/jdk/pull/3143
More information about the hotspot-gc-dev
mailing list