GC ergonomics is used by default on server class machines. Please see
for a description of GC ergonomics and server class machine. The flag "-server" causes the
server VM to be used. "-server" does not cause
the platform on which the VM is running to be considered a
server class machine.
Prior to JDK6 the UseParallelGC collector (with GC ergonomics turned on) used
only the flags InitialSurvivorRatio and
MinSurvivorRatio to set the initial survivor ratio and the minimum survivor
ratio, respectively. GC ergonomics dynamically resizes the survivor spaces,
but these flags allow the user to specify initial and minimum sizes for
the survivor spaces. The flag SurvivorRatio is used by the other collectors
(that don't dynamically resize the survivor spaces) to set the size of the
survivor spaces. SurvivorRatio was ignored by the UseParallelGC collector.
Beginning with JDK6 if the SurvivorRatio is set on the command line for
the UseParallelGC collector and InitialSurvivorRatio and MinSurvivorRatio
are not explicitly set on the command line,
then InitialSurvivorRatio and MinSurvivorRatio are
set to SurvivorRatio + 2.
If UseAdaptiveSizePolicy is turned off when using
the UseParallelGC collector,
the tenured generation and the young generation stay at their initial sizes
throughout the execution of the VM.
Starting with JDK5 update 06 the maximum tenuring threshold is limited to 15. The
GC logging output does not correctly reflect this change. This is a bug that
will be fixed under 6521376.
If a minimum heap size is set
with -Xms and NewSize is
not explicitly set, the minimum young generation size is
calculated using NewRatio. The UseParallelGC collector
is not correctly using the minimum value calculated from
-Xms and NewRatio but is using the default value of NewSize.
Explicitly setting NewSize does correctly set the minimum
size for the generation. This is being fixed under bug 6524727.