堆的新生代和老年代的理解

参考文章:http://www.cnblogs.com/duanxz/p/6076662.html

堆被划分为新生代和老年代,新生代又分为eden区和s0、s1区。
新创建的对象存放在eden区,当eden区满时,执行gc,将eden中的存活对象存放到s0区中。当eden区再一次满时,执行gc,同时执行复制算法,将eden区和s0区存活对象存放到s1区中,同时交换s0和s1的角色。当对象复制达到16次时,对象被存放在老年代。
为什么新生代需要两个survivor区?
如果只有一个survivor区的话,每次执行gc后,存活的对象都被放在这个survivor区中,会导致内存使用的不连续,即产生碎片。而使用两个survivor区的话,每次执行gc后,eden区和s0区的存活对象就被存放在s1区中,避免了碎片的产生。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值