ClassUnloadingWithConcurrentMark

Simone Bordet simone.bordet at gmail.com
Tue Oct 1 10:50:53 UTC 2019


eHi,

I'm a bit confused by this flag so I'd like some clarification.

AFAIU, it's recently (JDK 9+?) possible to do class unloading without
being at a safepoint.
There is now a lock for the ClassLoaderDataGraph that can be grabbed
outside safepoint to do class unloading.

Do I understand right that Shenandoah does class unloading
"concurrently", i.e. without being at a safepoint?

I skimmed over the code, and seems to be that
SystemDictionary::do_unload() is called from
ShenandoahHeap::unload_classes_and_cleanup_tables() that is called
from ShenandoahConcurrentMark::finish_mark_from_roots(), which can
only be called at safepoint, so apparently the answer to my question
is "no"?

Thanks!

-- 
Simone Bordet
---
Finally, no matter how good the architecture and design are,
to deliver bug-free software with optimal performance and reliability,
the implementation technique must be flawless.   Victoria Livschitz


More information about the shenandoah-dev mailing list