I've got a 4 core virtual system, so I've set ParallelGCThreads to 4 and ParallelCMSThreads to 1 (based on (ParallelGCThreads + 3)/4) ), and when I take a look at the treads in either a threaddump or in jconsole, no ParallelCMSThreads appear. I've added another core, and the calculation now produces a result of 2. When I start the JVM with 5 ParallelGCThreads and 2 ParallelCMSThreads, the ParallelCMSThreads threads appear in jconsole/threaddumps just fine.
So my question is: does the JVM only create ParallelCMSThreads when there are 2 or more specified, or is some other thing wrong when I try to specify only 1? I am unable to find any documentation that clarifies this.