如果在java中将head设置为null,是否会删除链接列表?

时间:2016-05-17 11:33:59

标签: linked-list garbage-collection

在java垃圾收集器中负责清理没有任何引用的对象。我想知道单链表的头是否设置为null,将没有对下一个列表节点的引用,因此,垃圾收集器应该标记它以进行清理,我们不需要遍历完整列表并逐个删除节点?

2 个答案:

答案 0 :(得分:1)

垃圾收集检查活着对象。

虽然你的一些对象拥有对该列表的引用,但列表(及其所有成员都是活动的)。

如果对列表的引用停止存在;例如,将其设置为null;你的列表对象不再存在。因此,它变得垃圾收集。

对于列表中的 对象,同样适用。所以 - 如果该列表是唯一保留对元素的引用的地方,则在列表“无效”之后该元素不再存在。然后也可以收集列表元素。但是如果有一些其他的活动对象引用了list元素...... list元素会保留;虽然列表本身已被收集。

换句话说:你应该像垃圾收集器一样思考:了解哪些对象是活着的;而其他任何事情都不再重要。

答案 1 :(得分:0)

是。实际上,即使列表是循环的,只要列表中没有任何列表元素的实时引用,它就会被垃圾收集。有关详细信息,请参阅here