--- old/src/hotspot/share/gc/parallel/psParallelCompact.cpp 2018-05-02 11:09:00.071066481 +0200 +++ new/src/hotspot/share/gc/parallel/psParallelCompact.cpp 2018-05-02 11:08:59.785057708 +0200 @@ -117,6 +117,7 @@ SpaceInfo PSParallelCompact::_space_info[PSParallelCompact::last_space_id]; +SpanSubjectToDiscoveryClosure PSParallelCompact::_span_based_discoverer; ReferenceProcessor* PSParallelCompact::_ref_processor = NULL; double PSParallelCompact::_dwl_mean; @@ -843,14 +844,14 @@ void PSParallelCompact::post_initialize() { ParallelScavengeHeap* heap = ParallelScavengeHeap::heap(); - MemRegion mr = heap->reserved_region(); + _span_based_discoverer.set_span(heap->reserved_region()); _ref_processor = - new ReferenceProcessor(mr, // span + new ReferenceProcessor(&_span_based_discoverer, ParallelRefProcEnabled && (ParallelGCThreads > 1), // mt processing - ParallelGCThreads, // mt processing degree - true, // mt discovery - ParallelGCThreads, // mt discovery degree - true, // atomic_discovery + ParallelGCThreads, // mt processing degree + true, // mt discovery + ParallelGCThreads, // mt discovery degree + true, // atomic_discovery &_is_alive_closure); // non-header is alive closure _counters = new CollectorCounters("PSParallelCompact", 1);