编程语言
首页 > 编程语言> > 垃圾收集算法

垃圾收集算法

作者:互联网

判断对象是否存活的方法

引用计数

对象有一个属性引用次数,当对象被引用时,该属性值加一。当对象取消引用时减一。引用次数为0时,表明该对象不会再被使用,认为是死亡对象。

可达性分析

从GC Roots开始往下搜索对象,搜索的路径构成引用链。若一个对象无引用链与GC Roots相连为不可达,否则可达。

GC Roots:

垃圾收集算法

标记-清除(Mark Sweep)算法

每个对象对应一个标记位,记录是否可达。

  1. 标记。对空间中对象进行可达性分析,标记可达对象。
  2. 清除不可达对象。

优点:

标记-压缩(Mark Compact)算法

  1. 标记。对空间中对象进行可达性分析,标记可达对象。
  2. 压缩。将可达对象全部移向空间的一端,清除可达对象边界之外的内存空间。

优点:

复制(Copy)算法

将内存空间分为两半A0、A1。

  1. 对空间A0进行可达性分析,标记可达对象。
  2. 将可达对象复制到空间A1, 清除A0空间。

优点:

标签:收集,标记,对象,清除,算法,引用,空间,可达性,垃圾
来源: https://blog.csdn.net/qq_39989608/article/details/122764439