【发布时间】:2017-02-06 09:37:11
【问题描述】:
我试图了解用于定义 JVM 堆大小的不同参数。
<jdkarg value="-Xmx20000M"/>
<jdkarg value="-Xms10000M"/>
<jdkarg value="-XX:NewSize=2500M"/>
<jdkarg value="-XX:NewRatio=1"/>
<jdkarg value="-XX:MaxNewSize=5000"/>
在这里我知道这些 jdkarg 是什么意思,是什么让我感到困惑,我在某处读到如果我定义 -XX:NewSize 和 -XX:NewRatio 然后同时声明 jvm 将使用 -XX:NewSize 而不是 -XX:NewRatio 分配年轻代大小。
所以在这里我有一些问题:
- 当我们定义 -XX:NewSize 和 -XX:NewRatio 时,初始年轻代大小将使用 -XX:NewSize 定义,对吗?
- 当堆大小增加到它的 MAX 在这种情况下 20000M 时会发生什么,那么它如何定义最大年轻代大小,它会使用 -MaxNewSize 还是 -XX:NewRatio或者它们都不会像我一样使用 -XX:NewSize?
我尝试了很多谷歌搜索,但没有找到任何结论。 任何有助于一起理解这些 arg 的帮助将不胜感激。
更新:
我得到的输出不符合预期:
S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT
426624.0 426624.0 0.0 426624.0 1706752.0 1013097.7 17920000.0 7208855.8 137032.0 82118.0 1952 130.126 24 20.441 150.567
在这里,我将 Old space 设为 17920000,即 17500 MB,将 young space 设为 2500 MB,这是我的初始值。
【问题讨论】:
-
您应该只添加您知道会有所帮助的调整参数。我建议您坚持使用
-Xmx10g -Xmx20g,除非您知道需要其他选项。
标签: java jvm performance-testing jvm-arguments jvm-hotspot