RFR: 8072498: Multi-thread JNI weak reference processing

Kim Barrett kim.barrett at oracle.com
Tue Jul 31 19:23:04 UTC 2018


Please review this change to WeakProcessor to support processing by
multiple threads in parallel.  This change uses the WorkGang
infrastructure to provide tasking and thread management.  The number
of threads to use may be determined ergonomically, based on
ReferencesPerThread.

At this time, only G1 makes use of this change.  CMS is deprecated, so
we're not spending effort on enhancements of it.  ParallelGC doesn't
use the WorkGang mechanism for parallelism, leading to the same issues
here as led to not making ParallelGC's j.l.r.Reference processing use
an ergonomically determined number of threads. We should fix
JDK-8204951 before trying to make ParallelGC use the parallel form of
WeakProcessor.

As part of this, introduced WeakProcessorPhases (to enumerate and
manipulate the phases) and WeakProcessorPhaseTimes (for collecting and
reporting timing information for the phases.

CR:
https://bugs.openjdk.java.net/browse/JDK-8072498

Webrev:
http://cr.openjdk.java.net/~kbarrett/8072498/open.00/

Testing:
mach5 tier1-3, hs-tier4-5.

Local and mach5 testing of TestGCBasherWithG1 and TestSystemGCWithG1,
with the tests modified to use a smaller non-default value of
-XX:ReferencesPerThread, to examine the logging output and verify
multi-threaded execution.




More information about the hotspot-gc-dev mailing list