3种方式各有优缺点,实际中都会使用
堆内逻辑分区
一个对象从出生到消亡,8:1:1是一个经验数据;实在不行就进old区域;年龄默认15,cms默认6会进old,参数可以设定,参数最高就是15(hotspot,对象头部就4位二进制来记录年龄 2^4-1 = 15)
年轻代使用 copy 算法,对象少,效率高;老年代使用 mark-sweep 或者mark-compact 算法
cms 收集器只作用于old 区域
java -XX:+PrintCommandLineFlags -version
parNew
g1:支持内存 几百G;再大就不行了。物理上分区;逻辑上分代。停顿200ms以内
ZGC:为大内存设计 ,上T(16T)。停顿一般10ms以内,最后达到1ms以内