【问题标题】:What is the meaning of the -XX:NewRatio and -XX:OldSize JVM flags?-XX:NewRatio 和 -XX:OldSize JVM 标志的含义是什么?
【发布时间】:2011-10-15 03:19:51
【问题描述】:

我正在使用以下命令行启动我的 java 应用程序:

java -XX:+PrintCommandLineFlags -verbose:gc -XX:+PrintGCDetails \
     -XX:+UseConcMarkSweepGC -jar start.jar

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

谁能解释一下 NewRatio 和 OldSize 的含义?特别是 OldSize 是tenured generation的初始大小?

【问题讨论】:

    标签: java memory garbage-collection options flags


    【解决方案1】:

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

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

    【讨论】:

    • 文档说“新/旧代大小的比率。默认值为 2。”。那么 2 是否意味着新生代的大小是旧代的两倍?
    • 我已经用 JVisualVM 的 VisualGC 插件验证了 -XX:NewRatio 的值越大,"old" 生成大小就越大,因此该比率的分子中必须有“old”,而不是分母。 (使用 Sun HotSpot JVM 版本 1.6.0_45 测试。)
    • 本周我还与 Oracle 人员核实过,没有办法使新尺寸大于旧尺寸。
    • @PeterLawrey 您能否将答案的文本更新为“老一代与年轻一代的比率”以使其与您的附加示例保持一致?现在你的文字说年轻/老,但你的例子说老/年轻。
    • @wings 令人困惑的是,它继续说“......伊甸园和幸存者空间的组合大小将是堆的第四个。”即新旧比例为 3:1,使年轻空间占堆的 1/4。此外“Server JVM 的默认 NewRatio 为 2:老年代占据堆的 2/3,而新生代占据 1/3。”
    【解决方案2】:

    由于已经很好地解释了 NewRatio,因此以下内容应该对 OldSize 有所帮助。

    这里,OldSize => 终身代的默认大小。在人机工程学发挥作用之前,这是tenured 的默认大小。

    【讨论】:

    • 是否意味着尺寸会从那里增长?你有任何与我可以参考的 OldSize 相关的链接吗?谢谢
    • 不记得它只是增长还是减少。那是很久以前。对不起。
    猜你喜欢
    • 1970-01-01
    • 2011-03-21
    • 2011-05-23
    • 2020-06-18
    • 2016-01-18
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多