Java整个堆大小设置
- Xmx 和 Xms设置为老年代存活对象的3-4倍,即FullGC之后的老年代内存占用的3-4倍
- 永久代PermSize和MaxPermSize设置为老年代存活对象的1.2-1.5倍。
- 年轻代Xmn的设置为老年代存活对象的1-1.5倍。
- 老年代的内存大小设置为老年代存活对象的2-3倍。
查看进行的堆内存
jmap -head PID
Sun官方建议年轻代的大小为整个堆的3/8左右, 所以按照上述设置的方式,基本符合Sun的建议。
堆大小=年轻代大小+年老代大小, 即xmx=xmn+老年代大小 。 Permsize不影响堆大小。
concurrent mark-sweep generation即为老年代的内存描述。
老年代的内存占用整个堆大小是老年代(FullGC)之后的3-4倍计算的话,设置各代的内存情况如下:Xmx=512m Xms=512m Xmn=128m PermSize=128m
老年代的大小为 (512-128=384m)为老年代存活对象大小的3倍左右调整之后的。