In `src/hotspot/share/gc/g1/g1CollectedHeap.cpp`:
```
_ref_processor_cm =
new ReferenceProcessor(&_is_subject_to_discovery_cm,
ParallelGCThreads, // degree of mt processing
(ParallelGCThreads > 1) || (ConcGCThreads > 1), // mt discovery
MAX2(ParallelGCThreads, ConcGCThreads), // degree of mt discovery
false, // Reference discovery is not atomic
&_is_alive_closure_cm); // is alive closure
```
CM ref processor does ref discovery during concurrent marking, which use `ConcGCThreads` GC threads. Therefore, the MT degree is determined by `ConcGCThreads`; `ParallelGCThreads` should not be used.
```
_ref_processor_cm =
new ReferenceProcessor(&_is_subject_to_discovery_cm,
ParallelGCThreads, // degree of mt processing
(ParallelGCThreads > 1) || (ConcGCThreads > 1), // mt discovery
MAX2(ParallelGCThreads, ConcGCThreads), // degree of mt discovery
false, // Reference discovery is not atomic
&_is_alive_closure_cm); // is alive closure
```
CM ref processor does ref discovery during concurrent marking, which use `ConcGCThreads` GC threads. Therefore, the MT degree is determined by `ConcGCThreads`; `ParallelGCThreads` should not be used.
- relates to
-
JDK-8271163 G1 uses wrong degree of MT processing since JDK-8270169
-
- Closed
-