1

我正在将JDK1.6.0_16JVM 用于托管在Linux Intel procesor 80 cores machine.

在启动 Java 应用程序时,我 -Xms2048m -Xmx8000m在 JVM 选项中只配置了两个选项(在 java 命令之后)。我看到 PS Old Gen 被计算为5.21G和 PS Eden 被计算2.6G但 PS Survivor 空间是25MB.

我在生产中使用完全相同的 JVM,并且 PS Survivor Space 大小显示为888MB. 我在 java 任务控制内存选项卡中看到这些大小。缓存大小(/proc/cpuinfo 的输出)显示24656在 UAT 和生产框中。

不要认为这会对 JVM 产生任何影响,但仍然提到在启动 JVM 时机器上的负载非常低。

您能否告知 JVM 考虑哪些参数来计算 PS Survivor Space 大小?

4

2 回答 2

2

来自 oracle gc 调优文章 1文章 2

幸存者空间大小

您可以使用该参数SurvivorRatio来调整幸存者空间的大小,但这通常对性能并不重要。例如, -XX:SurvivorRatio=6将伊甸园和幸存者空间之间的比率设置为 1:6。

In other words, each survivor space will be one-sixth the size of eden, and thus one-eighth the size of the young generation (not one-seventh, because there are two survivor spaces).

如果幸存者空间太小,复制集合会直接溢出到终身代。如果幸存者空间太大,它们将是无用的空

NewSizeMaxNewSize参数控制新一代的最小和最大尺寸。通过将这些参数设置为相等来调节新生代的大小。The bigger the younger generation, the less often minor collections occur.

NewRatio:新生代相对于老年代的大小由NewRatio控制。例如,设置-XX:NewRatio=3表示老年代和年轻代的比例为1:3the combined size of eden and the survivor spaces will be fourth of the heap

正如正确引用的那样Peter Lawrey,设置幸存者取决于您的应用程序的类型。来自 Oracle 的 gc 调整文章,这里是指导方针。

  1. First decide the maximum heap size you can afford to give the virtual machine. 然后将你的性能指标与年轻代的大小进行对比,以找到最佳设置

  2. If the total heap size is fixed, then increasing the young generation size requires reducing the tenured generation size. 保持老年代足够大,以容纳应用程序在任何给定时间使用的所有实时数据,以及一些松弛空间(10% 到 20% 或更多)。

  3. 受制于前面对终身代的约束:向年轻代授予大量内存,并且increase the young generation size as you increase the number of processors, because allocation can be parallelized. 默认值是根据NewRatio-Xmx设置计算的

于 2016-04-06T12:54:02.210 回答
2

您能否告知 JVM 考虑哪些参数来计算 PS Survivor Space 大小?

它必须足够大,以至于在收集 Eden 空间后永远不会真正填满,否则您将获得不受欢迎的 Full GC。

什么是最佳 Survivor 空间大小取决于您的应用程序。我建议你在实际负载下测试你的应用程序,使用比你想象的更大的 Eden 和 Survivor 空间,看看有多少空间被使用过,并根据你看到的使用情况增加 50% 到 100%。

该机器有 256G 的物理内存,其中约 200G

默认堆大小为 32 GB,我建议您使用此默认值,除非您有充分的理由减少它。

-XX:幸存者比率=1

这通常是一个坏主意,拥有像 8 这样的高存活率通常更好。

将值设置为 8 没有任何效果

很可能您的分配率很低。我通常设置一个高的 Young 空间,类似-Xmn8g甚至是,-Xmn24g但这是否是一个好/坏主意取决于您的应用程序。

于 2016-04-06T10:41:58.633 回答