RFR: 8268122: Add specific gc cause for G1 full collections [v3]

openjdk-notifier [bot] "github.com+73116608+openjdk-notifier[bot]" at openjdk.java.net
Wed Jun 9 13:48:21 UTC 2021


On Mon, 7 Jun 2021 09:03:25 GMT, Stefan Johansson <sjohanss at openjdk.org> wrote:

>> Please review this change to add a new GC cause for GC Full collections that are caused by a prior collection not being able to free up enough space.
>> 
>> **Summary**
>> During the review of PR #3143 it got pretty clear that reusing the Young GC cause for a following Full GC is not always good. A solution for this is to add a new GC cause that is used if a young collection can't free up enough space. This cause will not be used for other explicit Full GCs, like a call to `System.gc()`.
>> 
>> The would result in a change from:
>> 
>> [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
>> 
>> to:
>> 
>> [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
>> 
>> 
>> This PR is currently based in PR #4342, where we slightly change how Full GCs are scheduled if a Younc GC can't free up enough space.
>> 
>> **Testing**
>> I've tested this change together with PR #4342 and tier1-3 looks good. Also done manual testing making sure the GC-cause is used correctly.
>
> Stefan Johansson has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Move compaction cause in enum to under evacuation cause.

The dependent pull request has now been integrated, and the target branch of this pull request has been updated. This means that changes from the dependent pull request can start to show up as belonging to this pull request, which may be confusing for reviewers. To remedy this situation, simply merge the latest changes from the new target branch into this pull request by running commands similar to these in the local repository for your personal fork:


git checkout 8268163-full-gc-order
git fetch https://git.openjdk.java.net/jdk master
git merge FETCH_HEAD
# if there are conflicts, follow the instructions given by git merge
git commit -m "Merge master"
git push

-------------

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


More information about the hotspot-gc-dev mailing list