Java:为什么没有使用XX的默认值:SurvivorRatio?

时间:2014-12-04 12:12:54

标签: java garbage-collection jvm

如果您查看文档(例如http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html),您会发现XX的默认值为8:SurvivorRatio。

如果您在未明确设置SurvivorRation的情况下检查已启动的jvm,则可以看到此默认值:

jmap -heap <pid>

将输出

...
SurvivorRatio    = 8
...

但如果使用VisualGC检查S1 S0的最大大小,则可以看到使用了SurvivorRatio = 1。

如果你明确地启动java程序-XX:SurvivorRatio = 8

,图片就会改变

那么为什么默认。未使用的默认值非常令人恼火。

1 个答案:

答案 0 :(得分:5)

有关于java性能调优的the BOOK

-XX:SurvivorRatio=<n> should be used when you want to explicitly size survivor
spaces to manipulate object aging with the concurrent garbage collector, or to
manipulate object aging with the throughput garbage collector when adaptive sizing
is disabled using the command line option -XX:-UseAdaptiveSizePolicy.

除非您使用-XX:SurvivorRatio,否则-XX:-UseAdaptiveSizePolicy会被忽略。