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

时间:2012-03-09 01:43:11

标签: java arrays object garbage-collection

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

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

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

由于

4 个答案:

答案 0 :(得分:4)

  

当不再引用对象数组时,是否为对象   在该阵列中也收集了垃圾? (假设没有变量   参考元素)

  

“最大的危险是将对象放入集合中   忘记删除它。该对象使用的内存永远不会   再生“。

持有对该集合的引用时。例如,如果你有一个Map,你在其中放入一个键值,然后忘记删除,那么它永远保持在那里。如果您使用会话ID作为密钥在请求开始时使用ServerContext或某些此类内容,请考虑http会话,但在请求处理结束时无法将其删除..

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

另外,请注意:

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