RFR: Mixed evacuation [v4]
Roman Kennke
rkennke at openjdk.java.net
Fri Apr 16 16:37:59 UTC 2021
On Fri, 16 Apr 2021 14:38:10 GMT, Kelvin Nilsen <kdnilsen at openjdk.org> wrote:
> Was actually in the middle of doing something similar to this. I can redirect towards your solution or continue with the one I am working on. Here's how mine differs from yours:
>
> 1. I would introduce a subclass of ShenandoahHeuristics to be called ShenandoahOldHeuristics. This would hold all the new methods that are specific to old-generation heuristics, currently added to ShenandoahHeuristics: prime_collection_set() (renamed from prime_collection_set_with_old_candidates), prepare_for_old_collection(), start_old_evacuations(), unprocessed_old_collection_candidates(), next_old_collection_candidates(), consume_old_collection_candidate(), old_coalesce_and_fill_candidates(), get_coalesce_and_fill_candidates(), should_defer_gc()
>
> 2. I would pass a new ShenandoahOldHeuristics* old_heuristics argument to choose_collection_set() (possibly null in the case that we are doing GLOBAL - non-generation GC) and this argument would be passed down into prepare_for_other_collection().
>
> 3. I would hoist the check for should_defer_gc() into ShenandoahRegulatorThread::start_old_cycle() so that we don't have to "pollute" all the existing heuristics with this test.
>
>
> As with your proposal, there would no longer be a _old_heuristics field within ShenandoahHeuristics. This is why I have to pass in the new old_heuristics argument to the invocation of choose_collection_set().
>
> Are you ok with this approach?
That sounds reasonable. Go for it.
-------------
PR: https://git.openjdk.java.net/shenandoah/pull/29
More information about the shenandoah-dev
mailing list