我正在处理类似于垃圾收集的问题,我需要能够通知指向特定对象的每个对象,如果该对象被移动到其他位置。
仅维护对象的所有入站引用列表有哪些优缺点?这用于垃圾收集算法吗?如果没有,为什么不呢?
答案 0 :(得分:1)
标准复制垃圾收集器使用不同的技术来处理对象重定位。当它遍历对象图并复制对象时,它第一次通过某个指针到达对象时:
现在,每隔一次GC通过一个指针到达该对象,它就会看到“移动到地址A”标记并更新指针。
根据您的使用情况进行调整,我认为这意味着对象将指向中继指针。如果移动实际对象,请使用新地址更新中继指针。使用这种技术,每次访问对象都有一个额外的步骤(读取中继对象),移动对象是O(1)。使用的额外空间是O(对象数)。
使用传入指针技术,每次访问都没有开销,移动对象是O(传入指针)。使用的额外空间是O(指针数)。