Это работает для меня:
Значения по умолчанию (Java 7 64bit на Windows):
java -Xmx4g -Xms4g -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -version
java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b10)
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)
Heap
par new generation total 613440K, used 21813K
eden space 545344K, 4% used
from space 68096K, 0% used
to space 68096K, 0% used
concurrent mark-sweep generation total 3512768K, used 0K
concurrent-mark-sweep perm gen total 21248K, used 2084K
Теперь определения параметров соотношения (примерно такой же результат):
java -Xmx4g -Xms4g -XX:+PrintGCDetails -XX:NewRatio=6 -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -version
par new generation total 539264K, used 19174K
eden space 479360K, 4% used
from space 59904K, 0% used
to space 59904K, 0% used
concurrent mark-sweep generation total 3595136K, used 0K
concurrent-mark-sweep perm gen total 21248K, used 2084K
А потом совершенно другое соотношение между новыми/старыми и общими/оставшимися в живых:
java -Xmx4g -Xms4g -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=1 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -version
par new generation total 1398144K, used 27965K
eden space 699136K, 4% used
from space 699008K, 0% used
to space 699008K, 0% used
concurrent mark-sweep generation total 2097152K, used 0K
concurrent-mark-sweep perm gen total 21248K, used 2084K
То же самое работает для Java 6 или клиентской виртуальной машины (только с разными значениями по умолчанию).
Какая версия Java вы используете? Можете ли вы попробовать Java 6 udpate 33? –