RFR (S): 8214522: Last runtime locking issues for concurrent class unloading
Erik Österlund
erik.osterlund at oracle.com
Fri Nov 30 12:45:19 UTC 2018
Hi,
There are a few asserts and one lock acquisition remaining for
concurrent class unloading to be happy.
The asserts are changed to comply with SystemDictionary::do_unloading()
being done concurrently under the CLDG lock, and
ClassLoaderDataGraph::purge() being called without any locks taken (as
the data has been unlinked and subsequently had a global handshake
performed to make sure nobody is looking at the unloading list any longer).
The MetaspaceExpand_lock in
MetaspaceUtils::find_enclosing_virtual_space() is needed because
Metaspace::purge() uses the MetaspaceExpand_lock, and reads are not safe
without this lock. This lock was in Coleens original webrev last sweep,
but when I was asked why we needed it, I did not remember why so we
decided to leave it out until I could remember why I added that. This is
why.
Bugs:
https://bugs.openjdk.java.net/browse/JDK-8214522
Webrev:
http://cr.openjdk.java.net/~eosterlund/8214522/webrev.00/
Thanks,
/Erik
More information about the hotspot-runtime-dev
mailing list