30.堆区中新生代和老年代相关参数设置(-XX:NewRatio和-XX:SurvivorRatio)

1.新生代与老年代

1.存储在JVM中的Java对象可以被划分为两类:一类生命周期很短,这类对象的创建和消亡很快;一类生命周期很长,极端情况下,还能够与JVM的生命周期保持一致。
2.JVM堆区进一步细分为新生代和老年代。
3.年轻代又可以划分为Eden区、Survivor0区和Survivor1区(有时候也叫做from区、to区)
30.堆区中新生代和老年代相关参数设置(-XX:NewRatio和-XX:SurvivorRatio)

2.新生代和老年代的比例设置

1.-XX:NewRatio=2 表示新生代占1,老年代占2。则新生代占整个堆的1/3(这个参数一般不会使用)
2.默认情况下,新生代和老年代的比例是1:2
30.堆区中新生代和老年代相关参数设置(-XX:NewRatio和-XX:SurvivorRatio)
3.在HotSpot中,Oracle JVM官网说Eden区和另外两个Survivor空间默认所占的比例是8:1:1。(实际上默认并不是8:1:1,如下图,Eden区:Survivor0:Survivor1: = 11264 : 2048 : 2048 = 5.5 : 1 : 1,不同的情况,可能比例不一样,如果需要设置成8:1:1的话,自己直接设置-XX:SurvivorRatio=8就可以了。)
30.堆区中新生代和老年代相关参数设置(-XX:NewRatio和-XX:SurvivorRatio)
4.可以通过-XX:SurvivorRatio调整这个空间的比例,默认值是8
5. -XX:-UseAdaptiveSizePolicy :关闭自适应的内存分配策略 (暂时用不到)
6. 几乎所有的对象都在Eden区别new出来。
7. 绝大部分的Java对象都在新生代被销毁
8.-Xmn:设置新生代的空间的大小。 (一般不设置)
30.堆区中新生代和老年代相关参数设置(-XX:NewRatio和-XX:SurvivorRatio)
更多JVM文章请访问我的JVM专栏:
https://blog.****.net/u011069294/category_10113093.html