假设我有一个双向链表。我想从中删除一个序列,如下所示:
begin - element - element x element - element - element x element - end
\_________________________________/
-: reference
x: removed reference
我想知道我是否也应该删除要删除的元素之间的引用,或者垃圾收集器是否以更好的方式处理它。
您不需要删除这些引用。垃圾收集器可以轻松确定您要删除的三个元素不再可访问,因此无需扫描它们以查找可能的指针。换句话说,这样做没有性能提升。
要了解为什么会这样,请考虑这篇博文中介绍的第一个算法:http: //xtzgzorex.wordpress.com/2012/10/11/demystifying-garbage-collectors/
标准的垃圾收集器使用可以处理循环引用的标记和清除算法,因此不需要将它们清空(只有从可达内存到不可达内存的引用应该清空)