我运行的java
应用程序的最大堆大小为8 GB。
在32 GB内存中,Old gen的切片为7.4 GB(大约)。在128 GB的内存中,同一个应用程序获得了6.2 GB(约)的旧Gen。
我想知道内部JVM
如何做到这一点?是否有它使用的数学。实际上,我处于GC
调整的阶段,如果我知道默认情况下这个数字是如何到达的话会有所帮助。我使用JDK
1.7。
答案 0 :(得分:2)
它与系统中的总RAM无关。 GC比率会影响不同地区的内存量。
-XX:NewRatio = n旧/新一代尺寸的比率。默认值为2.
-XX:SurvivorRatio = n伊甸园/幸存者空间大小的比率。默认值为8.
-XX:MaxHeapFreeRatio = 70 GC后最大可用堆积百分比,以避免收缩。
使用前2个比率来调整VM本身内部堆的比率。使用可用堆比率来调整堆可以增长/缩小的内存量。
推荐阅读 - Oracle提供了GC tuning guide。