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