GC 垃圾收集

GC

引用计数

基本思路是给每个对象添加一个引用计算器,每当有一个地方引用它时,引用计数+1;当引用失效时,引用计数-1。当引用数为0时,代表对象已经没有地方在使用,自动删除对象。

优点

  • 实现简单
  • 失效直接释放,不用额外中断

缺点

  • 有循环引用的问题存在

可达性分析

选取一系列GC Roots,从这些节点出发,不能通过引用链相连的对象,则视为可回收的对象。

可作为GC Roots的对象

  • 虚拟机栈中引用的对象
  • 方法区中静态属性引用的对象
  • 方法区中常量引用的对象
  • 本地方法栈引用的对象

垃圾收集算法

标记-清除算法

先标记出所有需要回收的对象,然后再统一回收所有对象。

缺点
  • 效率不高
  • 产生大量碎片
复制算法

为了解决“标记-清除”的效率问题,此算法应时而生。
把可用内存平均划分为两块A与B,一次只用一块。如果当前在A创建对象,当A内存用完时,会把存活对象复制到B,再一次性清空A。

标记-整理算法

标记完对象后,把标记对象往一堆移动。再清除边界以外部分。

分代收集算法

在java中一般会划分成两代,新生代与老年代。新生代在每次GC时,大多对象会死去,仅存活少量对象,这时候采用“复制”算法。老年代对象存活率往往较高,采用“标记-清理”或“标记-整理”更加合理。

资料

深入理解java虚拟机——垃圾收集器

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值