当前位置:编程学习 > JAVA >>

JVM新生代和老年代内存分配问题

新生代和老年代怎样的比例比较合适呢,两个年代的不合理分配会带来什么坏处呢?举个极端的例子:

1、heap有1G,young gen指定为990m,old gen指定为10m. 请问坏处是什么呢?我能联想到的是:一旦young区的minor GC快撑不住时,old gen由于过小很容易触发full GC,stop the world(假定old gen回收器既不是CMS,也不是G1),而且会频繁的触发full GC,不过old gen只有10m啊,即使full GC也并不可怕啊,耗时也很短啊,所以为什么不可以young很大,old很小呢?

2、heap有1G, young gen指定为10m,old gen指定为990m, 又有什么坏处呢?我能联想到的是:Full GC的频率应该会很小,而minor GC频率会很大,虽然minor GC耗时很短暂,但这也会导致频繁的short pause啊,也会有lantency啊。


综上,我觉得两个区不管谁大谁小,都会导致坏处,所以我不知合理的配置应该是怎样?看到书上一般是指定young gen很小,而old gen很大,我不知道为什么会这样呢?小弟这方面理解有限,希望高手解疑。 --------------------编程问答-------------------- 1的情况是:当老年代中不全是垃圾对象的时候,会导致老年代内存被占满,Full GC的时候没有足够的空间进行操作从而引起jvm crash。作从而引起jvm crash。[/color]
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,