RFR: JDK-8226757: Shenandoah: Make Traversal a separate mode

Aleksey Shipilev shade at redhat.com
Thu Jul 4 08:38:46 UTC 2019


On 7/3/19 6:16 PM, Roman Kennke wrote:
>>   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.

-- 
Thanks,
-Aleksey




More information about the hotspot-gc-dev mailing list