RFR: 8368152: Shenandoah: Incorrect behavior at end of degenerated cycle [v3]
Y. Srinivas Ramakrishna
ysr at openjdk.org
Tue Sep 23 22:24:17 UTC 2025
On Tue, 23 Sep 2025 21:24:20 GMT, William Kemper <wkemper at openjdk.org> wrote:
>> There are several issues addressed in this PR:
>> * Shenandoah always ran a full GC after any degenerated cycle
>> * The number of consecutive degenerated GCs with bad progress was reset for every degenerated cycle
>> * Good progress was reported in generational mode even when no progress is made
>
> William Kemper has updated the pull request incrementally with one additional commit since the last revision:
>
> Improve comment
Also, independently, I think the notion of progress should be clarified based on current implementation in `ShenandoahMetricsSnapshot::is_good_progress()` (which declaration should itself have a brief comment):
Compare before and after snapshots to determine if GC
made sufficient progress. The notion of progress is based on space free after,
change in space freed, or changes in internal and/or external fragmentation.
I found it slightly confusing that even though a `Generation` argument is passed into the method, it's really not used directly as far as I could tell in the notion of progress. The metrics all appear to be heap-wide, rather than generation-wide. There is a comment about the collection set being proportional to the generation in question which of course makes sense, but I'd much rather we didn't pass in an argument that isn't used there, but rather address it directly in the documentation.
May be I am missing something?
-------------
PR Comment: https://git.openjdk.org/jdk/pull/27456#issuecomment-3325724362
More information about the hotspot-gc-dev
mailing list