我有一个doubly linked list对象数量:
class MyObject {
MyObject previousObject;
MyObject nextObject;
// Other fields and methods
}
只有此类列表的第一个对象直接存储在应用程序中,其他对象通过第一个对象访问并在应用程序中临时使用(但在列表之外不保留任何永久引用)本身)。
当不再引用某个对象时,它会被垃圾收集器收集。
但是,我想知道情况是否仍然如此,因为(第一个)对象仍然被链表中的“下一个对象”引用?那么列表的其余部分呢,这些对象是否也被收集(即使被彼此引用)?
注意:我知道当我不再使用列表中的所有引用时,我可以删除它。但由于应用程序的性质,这很“困难”,并会导致额外的(不必要的?)开销。
最佳答案
GC 不使用引用计数,因此循环依赖关系处理得很好。您不需要执行任何操作,当列表中不再有任何元素可访问时,整个列表将被垃圾收集。
关于java - 当第一个列表项不可达时,GC 是否会收集链表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14920642/