如果您有一个扩展了的数组列表(数组已增长)以包含许多元素,然后又删除了这些元素,那么实际的数组大小是否会更改以节省内存?
更详细地,当从大数组列表中删除一个元素时,是否恢复了数组空部分的保留内存?从逻辑上讲,由于我们扩展了数组,因此我们可能需要使用此空间,因此不会被触及。
但是,如果我们有一个非常大的数组列表,并且仅使用前10个左右的元素,那么编译器(或在运行时)是否会意识到所有多余的空间都在浪费并得以恢复? (会减小实际的数组大小吗?(将元素复制到较小的数组中吗?))
答案 0 :(得分:9)
您可以调用trimToSize()
,以将ArrayList的后备数组替换为与列表大小匹配的较小数组。
void java.util.ArrayList.trimToSize()
将此ArrayList实例的容量调整为列表的当前大小。应用程序可以使用此操作来最大程度地减少ArrayList实例的存储。