Request for Review (M) - 8150994: UseParallelGC fails with UseDynamicNumberOfGCThreads with specjbb2005

Jon Masamitsu jon.masamitsu at
Wed Apr 13 03:50:12 UTC 2016

The ParallelGC collector compacts by moving live objects from source
regions to destination regions.  The destination regions are regions 
that have
been emptied of live objects and the source regions are regions that hold
the original locations of the live objects.  When a source region is 
it becomes a destination region.  At the start of the compaction the
destination regions are distributed to per thread lists processed by the GC
workers.   The original implementation had tasks that drain the initial
destination lists and tasks that steal destination regions from other
GC workers.  The draining tasks and stealing tasks shared the per thread
lists of destination regions.  The bug was that the sharing was not
synchronized correctly.

See [1] for more details.

The fix is to combine the draining tasks and stealing tasks so that
sharing of the destination lists is not needed.





More information about the hotspot-gc-dev mailing list