RFR: JDK-8216973: Shenandoah: Kick up cleanup phases in the right places

Aleksey Shipilev shade at redhat.com
Mon Jan 14 11:40:30 UTC 2019


On 1/14/19 12:25 PM, Roman Kennke wrote:
> In Shenandoah, we currently start cleanup phase when we dive into
> concurrent evacuation (and only then), and after the cycle
> (unconditionally). However, we only create trashed regions in final-mark
> (immediate garbage and/or garbage from previous cycle), and might skip
> evacuation altogether, and may not actually create trash at end of cycle
> if we merge update-refs onto subsequent concurrent-mark. Let's start
> cleanups where we actually need them: once unconditionally before
> conc-evac and once after final-update-refs.

The intent for the patch is okay.

> http://cr.openjdk.java.net/~rkennke/JDK-8216973/webrev.00/

I think comments need to be updated, for example:

After final-mark:

  // Final mark might have reclaimed some immediate garbage, kick cleanup to reclaim
  // the space. This would be the last action if there is nothing to evacuate.
  heap->entry_cleanup();


After update-refs:

  // Update references freed up collection set, kick the cleanup to reclaim the space.
  heap->entry_cleanup();


> Also, should this go into JDK12?

I think this is the minor performance enhancement, and as such it should be deferred until first
12u. So, let's push this to jdk/jdk, let it be tested, and then we'll do the backport to
jdk-updates/jdk12u, when that arrives.

Thanks,
-Aleksey



More information about the shenandoah-dev mailing list