当不再引用对象数组时,该数组中的对象是否也被垃圾回收? (假设没有变量引用元素)
在此页面中,http://java.sys-con.com/node/37613 它说 - “最大的危险是将一个对象放入一个集合而忘记删除它。该对象使用的内存永远不会被回收。”
如果确保取消引用,为什么要无人认领该内存?
由于
答案 0 :(得分:4)
当不再引用对象数组时,是否为对象 在该阵列中也收集了垃圾? (假设没有变量 参考元素)
是
“最大的危险是将对象放入集合中 忘记删除它。该对象使用的内存永远不会 再生“。
当 持有对该集合的引用时。例如,如果你有一个Map
,你在其中放入一个键值,然后忘记删除,那么它永远保持在那里。如果您使用会话ID作为密钥在请求开始时使用ServerContext
或某些此类内容,请考虑http会话,但在请求处理结束时无法将其删除..
答案 1 :(得分:2)
对于第一个问题,答案是肯定的,绝对:非引用数组中的对象和其他引用都没有收集垃圾。
关于第二个问题,该文档讨论了如何将一个对象遗忘在引用的集合中,例如某种缓存,静态字段,线程本地存储等。 / p>
答案 2 :(得分:1)
如果没有引用它,它将不会被无人认领。文章说如果你取消引用,但是对象仍然在引用的集合中(因此被引用),它将不会被收集。
答案 3 :(得分:1)
一般来说,任何未引用的内容都是垃圾回收。所以,是的,这些对象将被垃圾收集。
另外,请注意: