GC算法

 

 

哪些对象可以被回收

  • 引用计数算法
  • 根遍历算法

如何进行回收

  • 标记-清除算法
  • 复制算法
  • 标记-整理算法

引用计数算法:

对象有一个引用+1,删除一个引用-1。只要计数为0的可以被GC。

  • 缺点:
    1. 循环引用问题。如A.b = B和B.a=A。再无其他引用。
    2. 需要维护一个计数器。

 根遍历算法

针对引用计算器算法的循环引用问题,出现了根遍历算法。设若干个GC roots,若一个对象从GC roots到这个对象不可达,则说明该对象不可用。

 

标记-清除

通过根遍历,标记从根节点开始所有可达对象。未被标记的就是需要垃圾处理的对象。清除时,清除所有未被标记的对象。

 

复制算法(新生代)

将原有的内存分成两块,每次只使用其中一块,在垃圾回收时,将正在使用的内存中存活对象复制到未使用内存块中,之后,清除正在使用的内存块中所有对象。

特点,比标记-清除效率高,但空间浪费

 

标记-整理(老年代)

对于对象存活率比较高的,使用复制算法,效率变低,且浪费空间。所以出现了标记-整理算法。通过根遍历,将标记的对象放到内存的一段,清理边界外所有空间。

标记整理不是对象保存连续了,不至于内存中的对象杂乱无章,也消除了复制算法中内存问题。但是标记整理的效率不高,对于老年代,由于老年代存活率相对问题,不需要频繁整理,所以标记整理适合老年代。

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值