src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp

Print this page

        

@@ -825,17 +825,19 @@
 void PSParallelCompact::post_initialize() {
   ParallelScavengeHeap* heap = gc_heap();
   assert(heap->kind() == CollectedHeap::ParallelScavengeHeap, "Sanity");
 
   MemRegion mr = heap->reserved_region();
-  _ref_processor = ReferenceProcessor::create_ref_processor(
-    mr,                         // span
+  _ref_processor =
+    new ReferenceProcessor(mr,            // span
+                           ParallelRefProcEnabled && (ParallelGCThreads > 1), // mt processing
+                           ParallelGCThreads, // mt processing degree
+                           true,          // mt discovery
+                           ParallelGCThreads, // mt discovery degree
     true,                       // atomic_discovery
-    true,                       // mt_discovery
-    &_is_alive_closure,
-    ParallelGCThreads,
-    ParallelRefProcEnabled);
+                           &_is_alive_closure, // non-header is alive closure
+                           false);        // write barrier for next field updates
   _counters = new CollectorCounters("PSParallelCompact", 1);
 
   // Initialize static fields in ParCompactionManager.
   ParCompactionManager::initialize(mark_bitmap());
 }