`ParCompactionManager::_manager_array` is an array of compaction manager (CM) instances, of size N+1. The first N elements are used by N GC threads, and the last by VM thread. `PCAdjustPointerClosure` uses a CM instance to calculate the new address (after relocation). Since `PCAdjustPointerClosure` is used both by VM and GC threads, the corresponding CM instance has to be used. It would be nice to have some verification in the constructor of `PCAdjustPointerClosure`, instead of failing mysteriously later on.
- relates to
JDK-8248314 Parallel: Parallelize parallel full gc Adjust Roots phase