src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
Print this page
@@ -1460,11 +1460,11 @@
// See the comment in G1CollectedHeap::ref_processing_init() about
// how reference processing currently works in G1.
// Temporarily make reference _discovery_ single threaded (non-MT).
- ReferenceProcessorMTMutator rp_disc_ser(ref_processor(), false);
+ ReferenceProcessorMTDiscoveryMutator rp_disc_ser(ref_processor(), false);
// Temporarily make refs discovery atomic
ReferenceProcessorAtomicMutator rp_disc_atomic(ref_processor(), true);
// Temporarily clear _is_alive_non_header
@@ -2217,18 +2217,18 @@
// * A full GC enables (non-MT) reference discovery and
// processes any discovered references.
SharedHeap::ref_processing_init();
MemRegion mr = reserved_region();
- _ref_processor = ReferenceProcessor::create_ref_processor(
- mr, // span
+ _ref_processor =
+ new ReferenceProcessor(mr, // span
+ ParallelRefProcEnabled && (ParallelGCThreads > 1), // mt processing
+ ParallelGCThreads, // degree of mt processing
+ ParallelGCThreads > 1 || ConcGCThreads > 1, // mt discovery
+ MAX2(ParallelGCThreads, ConcGCThreads), // degree of mt discovery
false, // Reference discovery is not atomic
- true, // mt_discovery
- &_is_alive_closure, // is alive closure
- // for efficiency
- ParallelGCThreads,
- ParallelRefProcEnabled,
+ &_is_alive_closure, // is alive closure for efficiency
true); // Setting next fields of discovered
// lists requires a barrier.
}
size_t G1CollectedHeap::capacity() const {