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

A.D*_*A.D 6 java arraylist

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

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

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

Era*_*ran 9

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

void java.util.ArrayList.trimToSize()

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