[15] RFR 8245240: Shenandoah: support nesting evacuation OOM scope

Zhengyu Gu zgu at redhat.com
Tue May 19 12:15:21 UTC 2020


Currently, Shenandoah does no support nesting evacuation OOM scope, that 
presents a several drawbacks:

1) Can not allow barriers on some/many GC paths, manifested by 
JDK-8237396 and JDK-8242216. Although, we fixed them in shared code, but 
sooner or later, the problem will likely pop up again.

2) We have to setup the scope closes to evacuation code and narrows the 
scope. Setting up and tearing down scope are expensive, while nesting 
is a lot cheaper.

3) Complicates code, have to deal with weather the call comes from GC or 
barrier.

Supporting nesting scope is actually quite simple and cheap. We only 
need the top level scope to participate evacuation OOM protocol (enter 
and exit the protocol), while nesting scope simply push/pop nesting level.

With nesting scope support, we can setup the scope early, e.g. once 
per-worker task. It shows very promising performance improvement for 
code roots processing during concurrent class unloading.

Bug: https://bugs.openjdk.java.net/browse/JDK-8245240
Webrev: http://cr.openjdk.java.net/~zgu/JDK-8245240/webrev.00/index.html

Test:
   hotspot_gc_shenandoah
   tier1 with Shenandoah

Thanks,

-Zhengyu



More information about the hotspot-gc-dev mailing list