Java堆大小 - 没有AdaptiveSizePolicy的年轻代大小

时间:2014-06-03 15:38:05

标签: java garbage-collection heap-memory

今天我在调整java堆的大小时发现了一个奇怪的行为。作为调整我年轻一代的参数我选择:

-XX:NewSize=2100M
-XX:MaxNewSize=2100M

此外,我使用以下命令关闭了AdaptiveSizePolicy:

-XX:-UseAdaptiveSizePolicy

根据这3个参数,我的年轻一代应该是2100M。但是当我查看我的gc-log时,大小只有大约1900 MB(~89%)。当尝试不同的大小时,日志中的年轻一代大约相同的百分比(~89%)。

整个堆是5 GB。在日志文件中,整个堆的大小很好(~4,97 GB)。我使用的收藏家是年轻一代的PSYoungGen和老一代的ParallelOldGC。

有人可以简单地解释为什么年轻人的体型小于应该的年龄吗?

1 个答案:

答案 0 :(得分:0)

您是否有可能只关注伊甸园空间而不是整个年轻一代?

-XX:NewSize控件'Maximum size of new generation (in bytes)'这不仅仅是'Eden空间',它也用于管理两个'幸存者空间'。它们之间的比例可以使用-XX:SurvivorRatio

来控制

请参阅this link

例如,我使用安装了visualGC插件的visualVM来检查使用以下VM参数运行的java进程-XX:NewSize = 256M和-XX:SurvivorRatio = 4.

enter image description here

我的伊甸园空间是170.750M 我的幸存者0是42.625M 我的幸存者1是42.625M

170.750 + 42.625 + 42.625 = 256M