Java虚拟机——垃圾收集算法

文章介绍了垃圾收集算法的核心思想,包括基于分代假说的收集理论,如弱分代和强分代假说,以及这些理论在Java堆中新生代和老年代划分的应用。此外,讨论了三种经典的垃圾收集算法——标记-清除、标记-复制和标记-整理,分别针对不同场景优化效率。
摘要由CSDN通过智能技术生成
  • 垃圾收集算法的实现涉及大量的程序细节。
  • 这里只重点介绍 分代收集理论 和 几种算法思想及发展过程
    在这里插入图片描述

3.3.1 分代收集理论

  • 分代收集建立在两个 分代假说之上
  1. 弱分代假说 : 绝大多数对象都是朝生夕灭的
  2. 强分代假说: 熬过越多次垃圾收集过程的对象就越难以消亡。
  • 它们共同奠定了常用的垃圾收集器的一致的设计原则:收集器应该将Java堆划分出不同的区域,然后将回收对象依据其年龄分配到不同的区域之中存储。
  • 年龄:就是对象熬过垃圾收集过程的次数
    在这里插入图片描述
  • 分代收集理论放在现在的商用Java虚拟机里面,设计者一般会把Java堆分为 新生代和老年代。
  • 新生代中每垃圾收集都会有大批对象死去 , 而每次回收后存活的少量的对象,将会晋升到老年代中存放。
    在这里插入图片描述
  • 为了解决这个问题,多了第三条经验法则
  1. 跨代引用假说: 跨代引用相对于同代引用来说是极少数。(存在互相引用的两个对象,是应该倾向于同时生存或者同时消亡)
    在这里插入图片描述

针对不同分代的名词

在这里插入图片描述

3.3.2 标记-清除算法

  • 最早也是最基础的垃圾收集算法
    在这里插入图片描述

3.3.3 标记-复制算法

  • 也叫作复制算法,为了解决标记-清楚算法面对 大量可回收对象效率低的问题。

在这里插入图片描述

3.3.4 标记-整理算法

  • 针对老年代对象存亡的特征,1974年提出了标记-整理算法。
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值