在垃圾收集中,维护入站引用列表有哪些缺点?

时间:2011-04-23 00:05:30

标签: garbage-collection

我正在处理类似于垃圾收集的问题,我需要能够通知指向特定对象的每个对象,如果该对象被移动到其他位置。

仅维护对象的所有入站引用列表有哪些优缺点?这用于垃圾收集算法吗?如果没有,为什么不呢?

1 个答案:

答案 0 :(得分:1)

标准复制垃圾收集器使用不同的技术来处理对象重定位。当它遍历对象图并复制对象时,它第一次通过某个指针到达对象时:

  1. 将对象复制到新地址(例如:地址A)。
  2. 更新指针。
  3. 将原始对象标记为“已移至地址A”
  4. 现在,每隔一次GC通过一个指针到达该对象,它就会看到“移动到地址A”标记并更新指针。

    根据您的使用情况进行调整,我认为这意味着对象将指向中继指针。如果移动实际对象,请使用新地址更新中继指针。使用这种技术,每次访问对象都有一个额外的步骤(读取中继对象),移动对象是O(1)。使用的额外空间是O(对象数)。

    使用传入指针技术,每次访问都没有开销,移动对象是O(传入指针)。使用的额外空间是O(指针数)。