【014】【JVM中的两个Survivor区】

Java虚拟机学习总结目录


【014】【JVM中的两个Survivor区】

在JVM GC的分代机制中,年轻代中有两个Survivor区,为了便于交换,需要保证其中一个为空,这个容易理解,但是为什么需要两个Survivor区,而且很多网上资料中说在特殊情况下,可以配置为多个,并没有说怎么配置,也没有说是什么特殊情况。

  1. 和GC的copying算法相关,既然是拷贝,就得有地方做from,有地方做to。
  2. 在原始的copying收集算法里,空间被分为两半,叫做semispace。空间分配和回收的过程就是把其中一半用作from来分配空间,当from快满或满足别的一些条件时将可到达的对象复制到to,并将from与to逻辑交换的过程。

单纯的copying收集不能很好的应对长时间存活的对象,因为那样的对象每次经历收集的时候都还活着,带来拷贝的开销。出于权衡,HotSpot里目前除G1外都采用相似的方式实现分代式GC,并且在young gen都使用copying收集算法。不过它使用的copying算法是原始算法的变种,留一块较大的区域作为eden,在eden与old gen之间设置semispace来作为缓冲,让“中等寿命”的对象尽量在进入old gen之前被收集掉。这就是HotSpot的survivor spaces。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值