RFR: 8314599: [GenShen] Couple adaptive tenuring and generation size budgeting [v3]

Kelvin Nilsen kdnilsen at openjdk.org
Tue Oct 7 23:48:52 UTC 2025


On Tue, 7 Oct 2025 21:15:40 GMT, William Kemper <wkemper at openjdk.org> wrote:

>> src/hotspot/share/gc/shenandoah/shenandoahCollectionSet.inline.hpp line 62:
>> 
>>> 60: 
>>> 61: size_t ShenandoahCollectionSet::get_live_bytes_in_young_regions() const {
>>> 62:   return _young_bytes_to_evacuate - _young_bytes_to_promote;
>> 
>> I'm wondering if these new names properly reflect the intention.  It seems get_live_byte_in_young_regions() really means get_live_bytes_that_we_intend_to_evacuate_to_young().  (This number does not include _live_bytes_in_young_regions() that we expect to evacuate to old.)
>
> I called the complementary method `get_live_bytes_in_tenurable_regions`. How about `get_live_bytes_in_untenurable_regions`?

I'm still maybe a bit confused.  Is it get_untenurable_live_bytes_in_young_regions()?  Are we distinguishing?

So we have a total of N live bytes within young regions that have been placed into the collection set.  We expect that P bytes (P < N) will be promoted, and the remaining S bytes (S + P == N) will be evacuated to "survivor space" within young.

Does get_live_bytes_in_untenurable_regions() equal P + S?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/27632#discussion_r2412180653


More information about the hotspot-gc-dev mailing list