新生代和老年代怎样的比例比较合适呢,两个年代的不合理分配会带来什么坏处呢?举个极端的例子: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很大,我不知道为什么会这样呢?小弟这方面理解有限,希望高手解疑。