Java的ArrayList删除元素恢复浪费的空间?

时间:2019-04-15 09:27:29

标签: java arraylist

如果您有一个扩展了的数组列表(数组已增长)以包含许多元素,然后又删除了这些元素,那么实际的数组大小是否会更改以节省内存?

更详细地,当从大数组列表中删除一个元素时,是否恢复了数组空部分的保留内存?从逻辑上讲,由于我们扩展了数组,因此我们可能需要使用此空间,因此不会被触及。

但是,如果我们有一个非常大的数组列表,并且仅使用前10个左右的元素,那么编译器(或在运行时)是否会意识到所有多余的空间都在浪费并得以恢复? (会减小实际的数组大小吗?(将元素复制到较小的数组中吗?))

1 个答案:

答案 0 :(得分:9)

您可以调用trimToSize(),以将ArrayList的后备数组替换为与列表大小匹配的较小数组。

  

void java.util.ArrayList.trimToSize()

     

将此ArrayList实例的容量调整为列表的当前大小。应用程序可以使用此操作来最大程度地减少ArrayList实例的存储。