java - 当第一个列表项不可达时,GC 是否会收集链表?

标签 java android garbage-collection linked-list

我有一个doubly linked list对象数量:

class MyObject {
  MyObject previousObject;
  MyObject nextObject;

  // Other fields and methods
}

只有此类列表的第一个对象直接存储在应用程序中,其他对象通过第一个对象访问并在应用程序中临时使用(但在列表之外不保留任何永久引用)本身)。

当不再引用某个对象时,它会被垃圾收集器收集。

但是,我想知道情况是否仍然如此,因为(第一个)对象仍然被链表中的“下一个对象”引用?那么列表的其余部分呢,这些对象是否也被收集(即使被彼此引用)?

注意:我知道当我不再使用列表中的所有引用时,我可以删除它。但由于应用程序的性质,这很“困难”,并会导致额外的(不必要的?)开销。

最佳答案

GC 不使用引用计数,因此循环依赖关系处理得很好。您不需要执行任何操作,当列表中不再有任何元素可访问时,整个列表将被垃圾收集。

关于java - 当第一个列表项不可达时,GC 是否会收集链表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14920642/

相关文章:

android - java.lang.ClassNotFoundException : Didn't find class "android.support.v4.content.FileProvider" error in Adone AIR native extension 异常

java - Vert.x Web 和 session 固定

c# - 从一堆网页中以编程方式提取结构化数据的最简单方法是什么?

java - Hibernate查询日志记录: need current timestamp

android - 如何在android端访问flutter Shared preferences(使用java)

android - 在我的应用程序运行时锁定其他应用程序

memory - 关闭 D 垃圾收集器

java - 关于垃圾收集器行为的查询

java - 无法从扩展 ViewGroup 调用方法

c# - 为什么最后才调用 GC.KeepAlive,而不是最开始?