RFR: Interleave partial GCs with concurrent GCs

Roman Kennke rkennke at redhat.com
Thu Mar 30 17:27:44 UTC 2017


Am 30.03.2017 um 17:58 schrieb Roman Kennke:
> This brings together partial GCs with Shenandoah's ordinary concurrent GC.
>
> The ShenandoahConcurrentThread kicks off a normal concurrent GC cycle
> just like the adaptive heuristics (the superclass of partial
> heuristics), i.e. when heap usage reaches a certain threshold. It forces
> an update-refs phase after the concurrent cycle to prepare for the next
> partial cycle.
>
> The update-refs phase completely rebuilds the matrix. This means we
> don't have to build it during marking. That's why I throw away all the
> additional marking closures.
>
> http://cr.openjdk.java.net/~rkennke/partial-conc-gc/webrev.00/
> <http://cr.openjdk.java.net/%7Erkennke/partial-conc-gc/webrev.00/>
>
> Tested using specjvm and hotspot_gc_shenandoah.
>
> Roman
>

Ok, the interleave part is misleading. It does not actually interleave
concurrent with partial GCs. It either does one or the other in each GC
phase.

Also, we might need the matrix that is built by concurrent marking, to
select which regions need updating during update-refs. Better to leave
that code in. Which makes the patch fairly concise:

http://cr.openjdk.java.net/~rkennke/partial-conc-gc/webrev.01
<http://cr.openjdk.java.net/%7Erkennke/partial-conc-gc/webrev.01>

Ok now?

Roman



More information about the shenandoah-dev mailing list