RFR: Heuristics should do concurrent cycles

Aleksey Shipilev shade at redhat.com
Fri Nov 2 19:20:03 UTC 2018


http://cr.openjdk.java.net/~shade/shenandoah/heuristics-concurrent/webrev.01/

This is the pack of 4 changes that make heuristics do concurrent cycles consistently. It consists of
the following changes:

 *) Make heuristics tell if we can process references or unload classes

 This adds can_* methods to heuristics, so it can say if it possibly can, but not necessarily should
either process the references or unload classes right now. This simplifies the dependencies all over
the GC code that either polls flags directly, or otherwise guesses on different things.

 *) Factor out implicit/explicit GC requests

 This rewrites the handling for "requested" and "explicit" GCs. Before, "explicit" was the subtype
of "requested" GC, which is confusing both conceptually and code-wise. Instead, there is now the
split between "explicit" (e.g. forced by user action) and "implicit" (e.g. coming from some other VM
facility) GCs. Recent metadata-induced GCs are the examples of implicit GCs.

Additionally, both implicit and explicit GCs always process references and unload classes -- and
they know that they can by polling new can_* methods. And they can do that without diving into Full GC.

 *) Print special cause for Metadata GC

 This moves the special "cause" message to control thread. This makes sure cause is printed only
when GC cycle is actually happening, which makes vmTestbase/metaspace tests happy.

 *) Concurrent cycle by default on any external GC request

 This makes Shenandoah react with concurrent GC on any GC request by default. This makes sure that
users would not get accidentally exposed to either Degen or Full GC in all normal uses, and it would
only happen if something goes really wrong. This is accomplished by defaulting to new values for
*GCInvokesConcurrent, which are also overridable. This is possible after all three things above are
done.


Testing: tier3_gc_shenandoah, vmTestbase/metaspace/ -XX:+UseShenandoahGC

Thanks,
-Aleksey




More information about the shenandoah-dev mailing list