RFR Shenandoah: Don't recycle trash regions before concurrent root processing
Zhengyu Gu
zgu at redhat.com
Tue Nov 26 01:09:57 UTC 2019
Concurrent root processing requires Collection Set kept intact, because
it is needed to determine if an oop is alive or dead.
Roman pointed out that our trash recycle-assist could recycle trash
regions prematurely. That results some of dead oops suddenly become
alive, as recycled regions becomes new regions and those dead oops are
above TAMS. This problem is exhibited by is_loader_alive() assertion
failure in CriticalNativeStress tests.
The solution is to avoid recycling trash region before concurrent root
processing is completed.
Webrev:
http://cr.openjdk.java.net/~zgu/early_recycle_trash/webrev.00/index.html
Test:
tier3_gc_shenandoah with 20 iterations, usually fails within 10
iterations without the fix.
Thanks,
-Zhengyu
More information about the shenandoah-dev
mailing list