在Java中,如何对垃圾收集对象数组?

当一个对象数组不再被引用时,该数组中的对象是否也被垃圾收集了? (假设没有变量引用元素)

在这个页面中, http : //java.sys-con.com/node/376​​13它说 – “最大的危险是将一个对象放入一个集合而忘记删除它。该对象使用的内存永远不会被回收。 “

如果确保使引用无效,为什么要无人认领该内存?

谢谢

当一个对象数组不再被引用时,该数组中的对象是否也被垃圾收集了? (假设没有变量引用元素)

是。

“最大的危险是将一个对象放入一个集合中而忘记删除它。该对象使用的内存永远不会被回收。”

这是当您持有对该集合的引用时。 例如,如果你有一个Map ,你在其中放置一个键值,然后忘记删除它然后永远保持在那里。 想想http会话,如果你在ServerContext使用某些东西,或者在使用session id作为密钥的请求开始时使用某些东西,但是在请求处理结束时无法删除它。

对于第一个问题,答案是肯定的,绝对:非引用数组中的对象和其他引用都没有收集垃圾。

关于第二个问题,该文档讨论了如何将遗忘对象置于引用的集合中,例如某种缓存,静态字段,线程本地存储等。

如果没有引用它,它将不会被无人认领。 文章说如果你取消引用,但是对象仍然在引用的集合中(因此引用),它将不会被收集。

一般来说,任何未引用的内容都是垃圾回收。 所以,是的,那些对象将被垃圾收集。

另请注意:

  1. 数组不是集合。
  2. 我认为写这个人的意思是确保你记住你引用一个对象的所有地方,所以如果你打算删除它,它就会被删除(并且没有延迟引用它)。