-XX的含义是什么:NewRatio和-XX:OldSize JVM标志?

dac*_*alr 18 java memory flags garbage-collection options

我使用以下命令行启动我的Java应用程序:

java -XX:+PrintCommandLineFlags -verbose:gc -XX:+PrintGCDetails \
     -XX:+UseConcMarkSweepGC -jar start.jar
Run Code Online (Sandbox Code Playgroud)

JVM启用以下选项:

-XX:MaxNewSize=87244800 -XX:MaxTenuringThreshold=4 -XX:NewRatio=7
-XX:NewSize=21811200 -XX:OldPLABSize=16 -XX:OldSize=65433600
-XX:+PrintCommandLineFlags -XX:+PrintGC -XX:+PrintGCDetails
-XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseParNewGC
Run Code Online (Sandbox Code Playgroud)

有人能解释我NewRatio和OldSize的含义吗?特别是OldSize是终身一代的初始规模?

Pet*_*rey 19

NewRatio是老一代与年轻一代的比例(例如,值2表示旧的最大尺寸将是年轻人最大尺寸的两倍,即年轻人可以达到堆的1/3).

OldSize不是记录的选项之一,但我认为它是终身空间的大小http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html

  • 我已经用JVisualVM的VisualGC插件验证了`-XX:NewRatio`的更高值导致更大的"旧"生成大小,因此比率必须在分子中具有"旧",而不是分母.(使用Sun HotSpot JVM 1.6.0_45测试.) (3认同)
  • 我本周也与甲骨文家伙核实,没有办法比例使新尺寸大于旧尺寸. (3认同)
  • 文档说:“新/旧尺寸的比例。默认值为2。”。那么2意味着新代的大小是旧代的两倍吗? (2认同)
  • @wings继续说“......伊甸园和幸存者空间的总大小将是堆的第四个”,这令人困惑。即新旧比率为 3:1,使新空间占堆的 1/4。还有“服务器 JVM 的默认 NewRatio 是 2:老年代占据堆的 2/3,而新生代占据 1/3。” (2认同)