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

Jon Masamitsu jon.masamitsu at
Sat Apr 30 01:50:59 UTC 2016

Webrev updated for code review comment.

Sorry, I muffed the webrev delta but this is the  only change (removal

of the assertion).


<           assert(which <= parallel_gc_threads,
<             "Inconsistent number of workers");

Thanks again, Thomas and Kim.


On 4/12/2016 8:50 PM, Jon Masamitsu wrote:
> 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 
> emptied,
> 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.
> [1]
> [2]
> Thanks.
> Jon

More information about the hotspot-gc-dev mailing list