JVM垃圾回收的分代收集思想

JVM的垃圾回收采用分代收集理论,基于弱分代和强分代假说,将堆分为新生代和老年代。新生代适合复制算法,老年代适合标记-清除或标记-整理算法。分代收集提高了内存回收效率,减少全堆扫描,降低性能影响。HotSpot VM等广泛使用此策略。
摘要由CSDN通过智能技术生成

在深入理解垃圾回收思想的时候,也要了解一下分代收集理论。

分代收集理论

这个理论主要是建立在两个分代假说之上的:

  1. 弱分代假说(Weak Generational Hypothesis):绝大多数对象都是朝生夕灭的。
  2. 强分代假说(Stong Generational Hypothesis):熬过越多次垃圾收集过程的对象就越难以死亡。

这两个部分共同奠定了后面很多的垃圾收集器的基本设计原则:收集器应该将Java堆划分出不同的区域,然后将回收对象依据年龄分配到不同的区域进行存储,针对不同的区域,又进行不同的垃圾收集。

但在最后也还出现了一个问题,在进行一次只限于新生代区域的收集(Minor GC),但新生代中的对象完全有可能被老年代所引用的,为了找出该区域中的存活对象,就不得不在固定的GC Roots之外,再额外遍历整个老年代所有对象来确保可达性结果的正确性,反过来也是一样的。这种在理论上是可行的,但实际上会对内存回收带来很大的性能负担。

所以就有了第三条经验法则:

  1. 跨代引用假说(Intergenerational Reference Hypothesis):跨代引用相对于同代引用来说仅占极少数。

存在互相引用关系的两个对象,是一个倾向于同时生存或者同时消亡的。

依据这条假说,我们就不再为了少量的跨代引用去扫描整个老年代,也不必浪费空间专门记录每一个对象是否存在哪些跨代引用,只需要在新生代上建立一个全局的数据结构(记忆集),这个结构把老年代划分为若

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值