2014-12-04 78 views
2

如果您查看文檔(例如http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html),您會發現XX:SurvivorRatio的默認值爲8。Java:爲什麼沒有使用XX的默認值:SurvivorRatio?

如果您檢查正在運行的JVM這一直startet沒有明確設置一個SurvivorRation你可以看到這個默認:

jmap -heap <pid> 

將輸出

... 
SurvivorRatio = 8 
... 

但是,如果你檢查S1的最大尺寸S0使用VisualGC,你可以看到使用了SurvivorRatio = 1。

的圖片,如果你明確地啓動Java PROGRAMM蒙山-XX變化:SurvivorRatio = 8

那麼,爲什麼默認。不使用的默認值非常令人惱火。

回答

4

the BOOK關於Java性能優化:

-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

+1

在我的測試中,使用Linux x64上的Java 8,我可以指定沒有其他參數的'-XX:SurvivorRatio',它可以工作。 – 2017-01-11 07:45:54

相關問題