https://blog.csdn.net/Decorator2015/article/details/50970999
已知虚拟机的一些参数设置如下: -Xms:1G; -Xmx:2G; -Xmn:500M; -XX:MaxPermSize:64M; -XX:+UseConcMarkSweepGC; -XX:SurvivorRatio=3; 求Eden区域的大小?
这是网易2016年在线笔试题中的一道选择题。 先分析一下里面各个参数的含义: -Xms:1G , 就是说初始堆大小为1G -Xmx:2G , 就是说最大堆大小为2G -Xmn:500M ,就是说年轻代大小是500M(包括一个Eden和两个Survivor) -XX:MaxPermSize:64M , 就是说设置持久代最大值为64M -XX:+UseConcMarkSweepGC , 就是说使用使用CMS内存收集算法 -XX:SurvivorRatio=3 , 就是说Eden区与Survivor区的大小比值为3:1:1
题目中所问的Eden区的大小是指年轻代的大小,直接根据-Xmn:500M和-XX:SurvivorRatio=3可以直接计算得出
500M(3/(3+1+1)) =500M(3/5) =500M*0.6 =300M 所以Eden区域的大小为300M。
1,整个堆包括年轻代,老年代和持久代。其中年轻代又包括一个Eden区和两个Survivor区。 2,年轻代: -XX:NewSize (for 1.3/1.4) , -XX:MaxNewSize (for 1.3/1.4) , -Xmn 3,持久代: -XX:PermSize -XX:MaxPermSize 4,年轻代和老年代的比例: -XX:NewRatio(年轻代和老年代的比值,年轻代多,除去持久代) 当设置了-XX:+UseConcMarkSweepGC后,会使-XX:NewRatio=4失效,此时需要使用-Xmn设置年轻代大小 5,Eden与Survivor的比例 -XX:SurvivorRatio(Eden区与两个Survivor区的比值,Eden区多)
END