RFR: Traveral GC heuristics
Roman Kennke
rkennke at redhat.com
Wed Jan 24 11:12:38 UTC 2018
Am 24.01.2018 um 11:11 schrieb Aleksey Shipilev:
> On 01/23/2018 09:41 PM, Roman Kennke wrote:
>> Differential patch:
>> http://cr.openjdk.java.net/~rkennke/traversal/webrev.05.diff/
>> Full patch, including your changes:
>> http://cr.openjdk.java.net/~rkennke/traversal/webrev.05/
>
> Okay! This looks safe enough to push.
>
> I have a minor question about why this is needed:
>
> 1657 case _degenerated_outside_cycle:
> 1658 if (shenandoahPolicy()->can_do_traversal_gc()) {
> 1659 // Not possible to degenerate from here, upgrade to Full GC right away.
> 1660 cancel_concgc(GCCause::_allocation_failure);
> 1661 op_degenerated_fail();
> 1662 return;
> 1663 }
>
> Aren't we good with the usual Degenerated GC cycle here?
>
> -Aleksey
>
>
>
The problem is that degen_outside_cycles goes into normal marking, and
something's not up for that. I'm hitting asserts when I go there.
To be honest, I am also not happy to have all this heuristics-specific
code/branches all over the place. Could this stuff be abstracted into
heuristics API? I.e. driver thread calls into heuristics to do stuff
(e.g. normal-degen, degen-outside-cycle, but also other stuff that is
currently sprinkled over different places), and heuristics calls the
right thing to take care of it?
Roman
More information about the shenandoah-dev
mailing list