Young区与YGC

Young区

          这里写图片描述
  Young区被划分为一个Eden区和两个Survivor区。Eden区存放新创建的对象,一个Survivor区存放YGC后存活的对象,另一个为空。

为什么分区?

  原因:让真正长期存活的对象进入Old区,降低FGC频率。如果不分区,Young区一旦被占满就触发YGC,存活对象进入Old区,即只要能经历一次YGC即可进入Old区,增加了FGC频率。

为什么存在两个Survivor区?

  原因:减少内存碎片,提升YGC效率。Young区采用复制算法提升YGC性能,如果只有一个Survivor区,Eden区存活的对象被拷贝到Survivor区,但是Survivor区存活的对象,只有两种选择,要么进入Old区,要么采用标记-清除/清理算法,可惜无论采用哪种方法效率都不高。因此,产生了一个空的Survivor区,以便Survivor区存活的对象能够被复制到该区,提升YGC效率。

SurvivorRatio对GC的影响?

  SurvivorRatio = Eden大小/一个Survivor大小;

  1. Young区大小一定时,Eden增加,YGC频率降低,YGC持续时间增加,Survivor减小,Survivor溢出概率变大,FGC频率增加,FGC持续时间不变;
  2. Young区大小一定时,Eden减小,YGC频率增加,YGC持续时间降低,Survivor变大,对象晋升概率变大,FGC频率增加,FGC持续时间不变;
SurvivorRatio的合理值?

  如果SurvivorRatio设置合理,不会发生SurvivorRatio溢出,且只有极少对象的存活周期达到晋升阈值,晋升到Old区。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值