java没有子列表(从、到)。clear()是否允许对ArrayList的已清除部分进行垃圾收集?
在Java中,当有一些非空的ArrayList时
list.sublist(from,to).clear()
编辑(重构问题):
减小ArrayList的内部大小(即让ArrayList在以后使用更少的内存)
我特别感兴趣的是from=0的情况,即列表从开始到某个项目都被清除。如果列表中有任何索引(不仅仅是第一个),trimToSize()也可以工作吗
你可以在下面搜索框中键入要查询的问题!
在Java中,当有一些非空的ArrayList时
list.sublist(from,to).clear()
编辑(重构问题):
减小ArrayList的内部大小(即让ArrayList在以后使用更少的内存)
我特别感兴趣的是from=0的情况,即列表从开始到某个项目都被清除。如果列表中有任何索引(不仅仅是第一个),trimToSize()也可以工作吗
# 1 楼答案
是的,如果你得到一个子列表并清除它,你将从原始列表中删除子列表中的所有元素
换句话说,如果列表是唯一一个存储对对象引用的列表,您删除的对象符合垃圾收集的条件
基本演示:
# 2 楼答案
没用过?返回的列表是原始列表的视图。如果修改其中一个,更改可能会在另一个上可见
# 3 楼答案
“清除”是在底层本机数组(对象[])中重新定位对象,但不会调整数组的大小。如果要在删除ArrayList中的某些项后减小数组大小,请使用trimToSize()方法
数组中未使用的元素引用被设置为null,因此可以对元素进行垃圾收集
# 4 楼答案
清除子列表时,与删除这些条目相同,因此可以对所有条目进行GCD(较少在其他地方引用)
托管内存对象的全部意义在于,您不需要担心如何以及何时清理它们。除非你知道你有问题,否则我不会担心的。在这种情况下,我会使用内存分析器来确定为什么对象会被保留,而你认为它们不应该被保留