RFR: 8235260: Shenandoah: Do concurrent roots even when no evacuation is necessary

Roman Kennke rkennke at redhat.com
Tue Dec 3 20:16:19 UTC 2019

Ok. Like this?



> Hi Roman,
> Fix looks good. Probably should change the method name
> is_empty_or_trash() to thing like can_allocate_from() ...
> Thanks,
> -Zhengyu
> On 12/3/19 11:29 AM, Roman Kennke wrote:
>> For concurrent class-unloading, we already found that we need to prevent
>> recycle-assist until concurrent roots processing is over, otherwise we
>> may get dangling pointers to a new region, which suddenly starts to
>> appear as live again because objects get allocated in them. The same
>> problem still exists for humongous regions, and we need to prevent using
>> trashed regions for humongous allocations until we're done with
>> concurrent roots.
>> The solution is to treat trashed regions as non-empty as long as
>> concurrent roots is in progress.
>> Bug:
>> https://bugs.openjdk.java.net/browse/JDK-8235260
>> Webrev:
>> http://cr.openjdk.java.net/~rkennke/JDK-8235260/webrev.00/Fix
>> Testing: hotspot_gc_shenandoah
>> This used to fail with the upcoming concurrent roots cleaning that I
>> have in progress, and passes now.
>> Roman

More information about the hotspot-gc-dev mailing list