如果我看到新生代和老生代的空间大部分未被利用,那么将年轻一代的大小设置得比老一代大是否可以?
将新生代的大小超过老生代会有什么后果吗?例如:-Xmx2g -Xmn1.5g
如果我看到新生代和老生代的空间大部分未被利用,那么将年轻一代的大小设置得比老一代大是否可以?
将新生代的大小超过老生代会有什么后果吗?例如:-Xmx2g -Xmn1.5g
-Xmn
来实现这一点(本答案基于java 8)-Xms1024M -Xmx1024M -Xmn800m
这里的空间看起来像这样(使用visualvm的visual gc插件)
您将拥有总共1024m的堆大小,其中800m用于年轻代(eden + 2个survivor空间),224m用于老年代。您可以使用SurvivorRatio
调整survivor空间。
从docs中得知:
您可以使用参数SurvivorRatio来调整survivor空间的大小,但这通常对性能不重要。例如,-XX:SurvivorRatio = 6将eden和一个survivor空间之间的比率设置为1:6。换句话说,每个survivor空间将是eden大小的六分之一,因此是年轻代大小的八分之一(不是七分之一,因为有两个survivor空间)。