Java List.clear()与List = null

Dav*_*len 16 java garbage-collection list

我在一个分析器下运行我的应用程序,内存使用量比我预期的要高得多,其中对象在不再需要后仍然存在.它们中的大多数都在列表对象已脱离上下文的列表中.

是否需要更长的垃圾收集器来释放位于列表中的对象,即使列表本身不再被引用?如果是这样的话,如果我在列表中脱离上下文之前调用清单(),它们会更快地释放吗?

谢谢 - 戴夫

Mar*_*nik 9

就垃圾收集机制而言,您会询问GC根是否优先于被检测为无法访问的所有其他可传递的可访问对象.鉴于标记扫描算法的工作方式,这两者之间没有区别.所有这些垃圾对象都将在同一个传递中标记,并且一个对象从无法访问的对象内部可达性对此没有影响.

找到许多仍未被回收的无法访问的对象并不是什么不寻常的事实,它实际上是为了整体应用程序性能的好处:只有当内存分配失败时,GC才会运行.如果您担心堆的大小,那么只需减小最大堆大小.这将导致更频繁的垃圾收集.