RFR: Single GCTimer shared by all operations

Aleksey Shipilev shade at redhat.com
Wed Jan 31 11:28:58 UTC 2018


http://cr.openjdk.java.net/~shade/shenandoah/single-gc-timer/webrev.01/

Degenerated GC exposed a wrinkle in our GCTimer handling. Full GC has the separate GCTimer (for
legacy reasons?). All other operations run with GCTimer from ShHeap. Degenerated GC is peculiar: it
may start as the usual operation, but then *continue* as upgraded to Full GC. GCTimers then start to
misbehave with asserts like:

#  assert(_phases->length() <= 1000) failed: Too many recored phases?

The solution/cleanup is to use a single GCTimer, basically letting Full GC using the GCTimer from
ShHeap.

Testing: hotspot_gc_shenandoah

Thanks,
-Aleksey



More information about the shenandoah-dev mailing list