Java List.clear() 与 List = null

标签 java list garbage-collection

<分区>

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

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

谢谢 - 戴夫

最佳答案

就垃圾回收机制而言,您问的是 GC 根 在被检测为不可访问时是否比所有其他可传递可访问对象具有任何优先级。考虑到标记-扫描算法的工作方式,这两者之间没有区别。所有此类垃圾对象都将在同一 channel 中进行标记,并且来自不可访问对象的对象的内部可达性对此没有影响。

发现大量无法访问的对象仍未被回收并不罕见,这实际上对整体应用程序性能有利:只有当内存分配失败时,GC 才会运行。如果您担心堆的大小,那么只需减小最大堆大小即可。这将导致更频繁的垃圾收集。

关于Java List.clear() 与 List = null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22635188/

相关文章:

java - 如何使用日历秒到时间并将值传递回函数

java - Springboot事件发布者有延迟

java - 在 linux 中指定类路径 *.jar 时无法添加多个 jar

python - 从列表中的值查找字符串中文本的第一个实例

java - 从 JTable 的行中计算值,并在按下保存 Mysql 按钮时将其显示在另一行中

java - 如何避免 Java 中 List<List<Integer>> 中的重复列表

c# - 在 List<int> 中查找出现次数最多的数字

c# - 溢出我的内存,强制垃圾收集器?

java - 当我移出范围但仍保留引用时,Java GC 发生了什么?

.net - 我什么时候应该使用 IDisposable,使用它会不会出错?处置链呢?