RFR: JDK-8226757: Shenandoah: Make Traversal a separate mode
Roman Kennke
rkennke at redhat.com
Thu Jul 4 12:29:22 UTC 2019
Hi Aleksey,
>>> GCMode default_mode = heap->is_traversal_mode() ?
>>> concurrent_traversal : concurrent_normal;
>>> GCCause::Cause default_cause = heap->is_traversal_mode() ?
>>> GCCause::_shenandoah_traversal_gc : GCCause::_shenandoah_concurrent_gc;
>>
>> Done.
>
> Note heap->is_traversal_mode() in the second statement. There is no need to introduce superficial
> dependency between two statements by using default_mode in the second one.
>
>>> *) shenandoah_globals.hpp still mention "passive" is heuristics, not mode. Happens in both
>>> ShenandoahGCHeuristics and ShenandoahGCMode option descriptions.
>>
>> Fixed.
>
> Not accurate, because we would mostly run degen GC in this mode:
> 78 " *) passive - do not start concurrent GC, wait for Full GC; ") \
>
> Let's say "passive - disable concurrent GC, do stop-the-world GC".
>
>
>>> ...by the way, shouldn't "traversal" mode have "traversal" heuristics here? I see
>>> shenandoahTraversalMode equate "adaptive" to ShenandoahTraversalHeuristics, which I believe is
>>> confusing...
>>
>> Well, the default traversal heuristics mimics the normal adaptive
>> heuristics as much as possible, and it is also adaptive. IMO it makes
>> sense to call it adaptive heuristics. I am about to also add an
>> aggressive heuristic to traversal mode. I'd rather keep it.
>
> Right, make sense.
>
>> Full:
>> http://cr.openjdk.java.net/~rkennke/JDK-8226757/webrev.03/
>
> Looks good, modulo changes above.
Did the changes and pushed. Thanks!
Roman
More information about the hotspot-gc-dev
mailing list