【问题标题】:How does garbage collection work with collection objects?垃圾收集如何与收集对象一起工作?
【发布时间】:2011-09-30 19:53:08
【问题描述】:

我很好奇 GC 是如何处理存储在集合对象中的对象的,例如 ArrayList 或 Hashtable。

我有这个 ArrayList。

ArrayList<Person> persons = new ArrayList<Person>();
persons.add(new Person("smith"));
persons.add(new Person("john"));
persons.add(new Person("harry"));
persons.add(new Person("nathan"));

假设 people 仍被其他对象引用,但存储在 ArrayList 中的 Person 对象之一未被引用。

当 GC 运行并查找未引用的对象时,是否会垃圾收集未引用的 Person 对象或跳过所有 Person 对象,因为该 Person 引用仍然被其他对象引用?

感谢任何答案。

【问题讨论】:

  • 拍摄。错误的主题。不知道这是怎么回事。
  • 我更新了你的主题;如果我完全弄错了,就大声喊叫,我可以解决它。 :)

标签: java collections garbage-collection


【解决方案1】:

存储在 ArrayList 中的所有 Person 对象都由 ArrayList 本身引用,因此只要您保持对 ArrayList 的引用,就可以间接引用每个 Person 对象。 GC 不会碰它。

如果您想要 GC 收集这些杂散的 Person 对象,您可以使用 Wea​​kReference 到 ArrayList 中的 Person 而不是 Person。

【讨论】:

    猜你喜欢
    • 2011-07-16
    • 1970-01-01
    • 2011-03-06
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多