ParallelGCThreads are calculated based on the platform architecture. It depends on the values in static variables of VM_Version. In jdk9 the values of ParallelGCThreads is calculated before the VM_Version variables are initialized so the calculations of ParallelGCThreads is not recognizing the architecture of the platform. In particular do not recognize that ParallelGCThreads should be calculated based on later niagara hardware (post niagara 1). There may be other parameters that are not being calculated correctly. The ParallelGCThreads was calculated correctly in jdk7 GA. It appears not be to calculated correctly in jdk8 although I have not debugged that case.