RFR: Make partial GC concurrent

Christine Flood cflood at redhat.com
Mon Oct 9 19:31:33 UTC 2017


Ok by me...

On Mon, Oct 9, 2017 at 1:44 PM, Roman Kennke <rkennke at redhat.com> wrote:

> Am 09.10.2017 um 19:40 schrieb Christine Flood:
>
> Couple of quick high level questions to be sure I understand....
>
> If we have a partial collection in the middle of concurrent marking, we
> ignore pointers into the collection set (from regions) and we treat all
> pointers into the to-regions as live?  Or do we do something more clever?
> It seems like this can leave garbage on the table.
>
> Partial cannot happen in the middle of conc-mark. We drive either
> conc-mark or conc-partial, we don't mix them up.
>
> What happens if we cancel a conc partial gc?  Do we have to do a complete
> update-refs phase?
>
> We slide into full-gc which will update everything.
>
> I'm worried that there's a window where these flags are inconsistent.  Are
> we sure that nothing bad can happen?
>
> + void ShenandoahHeap::set_concurrent_partial_in_progress(bool in_progress) {+   _concurrent_partial_in_progress = in_progress;+   JavaThread::satb_mark_queue_set().set_active_all_threads(in_progress, !in_progress);+   set_evacuation_in_progress_at_safepoint(in_progress);+ }+
>
> This happens during STW. I cannot see how bad things can happen (esp.
> given that conc-mark and conc-partial don't mix).
>
> Roman
>


More information about the shenandoah-dev mailing list