-
Enhancement
-
Resolution: Fixed
-
P3
-
8-shenandoah, 11.0.9, 14, 15
-
b25
Evacuation OOM scope is used to handle OOM during oop evacuation, currently, it does not support nesting.
That presents several drawbacks:
1) Can not allow barriers on some/many GC paths, manifested byJDK-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 fine grain the code for setting up Evac OOM scope, which can be expensive, while setting up per-thread nesting scope is much cheaper.
3) Complicates code, have to deal with if the call comes from GC or barrier.
Supporting per-thread nesting scope, should eliminate above shortcomings.
That presents several drawbacks:
1) Can not allow barriers on some/many GC paths, manifested by
2) We have to fine grain the code for setting up Evac OOM scope, which can be expensive, while setting up per-thread nesting scope is much cheaper.
3) Complicates code, have to deal with if the call comes from GC or barrier.
Supporting per-thread nesting scope, should eliminate above shortcomings.
- relates to
-
JDK-8245288 Shenandoah: move up ShenandoahEvacOOM scope for code root processing during concurrent class unloading
- Resolved
-
JDK-8237396 JvmtiTagMap::weak_oops_do() should not trigger barriers
- Resolved
-
JDK-8242216 ObjectSampler::weak_oops_do() should not trigger barrier
- Resolved