![Java GC arrangement of generations](https://istack.dev59.com/vXlre.webp)
(来源: oracle.com) 您可以使用 NewRatio 参数设置 年轻代 和 老年代(Tenured) 之间的比例,并使用 SurvivorRatio 参数设置 伊甸园空间 和 幸存者空间 之间的比例。
最近有关于查找堆空间默认比率的问题this question。它说您应该使用PrintGCDetails参数并手动计算比率。
我的问题是:不同堆空间的大小是否按相同比例增加,从而在整个应用程序运行时保持它们之间的比率设置恒定?例如,如果年轻代和老年代/终身代有一个默认的NewRatio为3,并且年轻代的初始保留堆空间为100MB,老年代为300MB。如果需要为老年代保留更多的内存,假设需要再保留300MB使其总共达到600MB。那么为年轻代保留的内存也会加倍到200MB,保持比率不变吗?