JVM堆内存中新生代区和老年代区的比例问题

-Xms、-Xmx都是1024M,通过监控看到幸存者From区是8.31M,伊甸园区是66.56M,老年代区是940.81M。没有配置-Xmn(新生代区大小)。通过网上的文章看新生代区:默认老年区是1:4,但是我这个是83.19:940.81都小于1:10了。求大神解答什么回事,新生代区用的是parNew,老年代区用的是CMS。

可以看下官方JDK8的JVM参数说明:
JDK8
因为你没有说清楚你的环境是怎样的,是x86还是x64,是server模式,还是client的模式,只能看猜想是这个参数的比例问题
图片说明

我猜你是x86-client模式,因为这个默认的NewRatio比例都是12,即Old/Young = 8
即上面940.81 / (8.31+66.56),大概为12.56,还有一点应该是你的可用内存还有一点,没有达到1024.

另外你这里应该计算错误,我印象中,幸存者区总有一个是空闲的,是Minor GC时,copy数据用的

图片说明