D自定义列表删除,垃圾收集器

时间:2012-11-11 13:36:19

标签: list class reference d

假设我有一个双向链表。我想从中删除一个序列:

begin - element - element x element - element - element x element - end
                        \_________________________________/
-: reference
x: removed reference

我想知道是否还应删除要删除的元素之间的引用,或者垃圾收集器是否以更好的方式处理它。

2 个答案:

答案 0 :(得分:6)

您无需删除这些引用。垃圾收集器可以简单地确定您要删除的三个元素不再可访问,因此无需扫描它们以寻找可能的指针。换句话说,这样做没有性能提升。

要了解为何会出现这种情况,请考虑此博文中提供的第一个算法:http://xtzgzorex.wordpress.com/2012/10/11/demystifying-garbage-collectors/

答案 1 :(得分:6)

标准垃圾收集器使用mark and sweep算法,该算法可以处理循环引用,因此不需要将它们归零(只有从可达内存到无法访问的引用应该为空)