假设我有一个双向链表。我想从中删除一个序列:
begin - element - element x element - element - element x element - end
\_________________________________/
-: reference
x: removed reference
我想知道是否还应删除要删除的元素之间的引用,或者垃圾收集器是否以更好的方式处理它。
答案 0 :(得分:6)
您无需删除这些引用。垃圾收集器可以简单地确定您要删除的三个元素不再可访问,因此无需扫描它们以寻找可能的指针。换句话说,这样做没有性能提升。
要了解为何会出现这种情况,请考虑此博文中提供的第一个算法:http://xtzgzorex.wordpress.com/2012/10/11/demystifying-garbage-collectors/
答案 1 :(得分:6)
标准垃圾收集器使用mark and sweep算法,该算法可以处理循环引用,因此不需要将它们归零(只有从可达内存到无法访问的引用应该为空)