RFR: 8210986: Add OopStorage cleanup to ServiceThread
Kim Barrett
kim.barrett at oracle.com
Fri Oct 19 20:47:24 UTC 2018
Please review this change to the Service thread to delete empty
OopStorage blocks when needed.
As part of this, eliminated delete_empty_blocks_safepoint, and renamed
delete_empty_blocks_concurrent to remove the now redundant _concurrent
suffix. Also added a predicate for the Service thread's use, to test
whether there is cleanup work to be done.
The previously unused empty block deletion has been revised for this
new usage. This includes making loops safepoint polite.
Various parts of OopStorage are now aware of the Service thread
cleanup and notify that thread when appropriate. (allocate's
obtaining the block to allocate from was refactored to make it easier
to insert that notification.)
As part of this, OopStorage::Block::release_entries now takes the
owning storage object as an argument (rather than a pointer to its
_deferred_updates list). This allows release_entries to perform
additional operations on the owner (so long as C++ DR45 has been
fixed, and we've added more AIX-specific workarounds for that).
While touching the Service thread, fixed Service_lock locking to use
use MonitorLockerEx rather than MutexLockerEx.
CR:
https://bugs.openjdk.java.net/browse/JDK-8210986
Webrev:
http://cr.openjdk.java.net/~kbarrett/8210986/open.00/
Testing:
Mach5 tier1-5.
Ran some performance tests to verify no regressions due to additional
load on the Service thread.
More information about the hotspot-dev
mailing list