JVM堆空间分配令人困惑

时间:2015-02-18 06:20:14

标签: java jvm

我运行的java应用程序的最大堆大小为8 GB。

在32 GB内存中,Old gen的切片为7.4 GB(大约)。在128 GB的内存中,同一个应用程序获得了6.2 GB(约)的旧Gen。

我想知道内部JVM如何做到这一点?是否有它使用的数学。实际上,我处于GC调整的阶段,如果我知道默认情况下这个数字是如何到达的话会有所帮助。我使用JDK 1.7。

1 个答案:

答案 0 :(得分:2)

它与系统中的总RAM无关。 GC比率会影响不同地区的内存量。

  

-XX:NewRatio = n旧/新一代尺寸的比率。默认值为2.

     

-XX:SurvivorRatio = n伊甸园/幸存者空间大小的比率。默认值为8.

     

-XX:MaxHeapFreeRatio = 70 GC后最大可用堆积百分比,以避免收缩。

使用前2个比率来调整VM本身内部堆的比率。使用可用堆比率来调整堆可以增长/缩小的内存量。

推荐阅读 - Oracle提供了GC tuning guide