分代收集算法、增量收集算法、分区收集算法

1.分代收集算法

  1. 前面讲到的标记-清除算法、复制算法、标记-压缩算法,都有优缺点,没有一种算法是最好的。
  2. JAVA将堆分为新生代和老年代,这样可以根据各个年代的特点的不同使用不同的算法。
    在这里插入图片描述
  3. 在新生代中使用复制算法,在老年代中使用标记-清除算法或者标记-压缩算法,或者两者的结合。(这就是所谓的分代收集算法)
    在这里插入图片描述
  4. CMS是基于标记-回收算法实现的,回收效率高,对于碎片问题,采用的是基于标记-整理算法的Serial Old回收器作为补偿措施。
    在这里插入图片描述

2.增量收集算法

  1. 在现有的收集算法中,每次垃圾回收,应用程序都会处于一种Stop the World的状态,这种状态下,应用程序会被挂起,暂停一切正常的工作。这样一来,将严重影响用户体验或者系统稳定性。
  2. 基本思想:如果一次性将所有的垃圾进行处理,需要造成系统长时间的停顿,那么就可以让垃圾收集线程和应用程序线程交替进行。每次,垃圾回收线程只收集一小片区域的内存空间,接着切换到用户线程继续执行。依次反复,知道垃圾收集完成。
    在这里插入图片描述
    增量算法优缺点:
    在这里插入图片描述

3.分区收集算法

在这里插入图片描述

  1. 分区收集算法就是将堆空间分成连续的不同的小区间region,每一个小区间都独立使用,独立回收,这种算法的好处是可以控制一次回收多少个小区间。如下图所示,将堆空间划分成一个个小的region
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值