【发布时间】:2019-04-15 09:27:28
【问题描述】:
如果您有一个 Array List 已扩展(数组已增长)以包含许多元素,然后这些元素被删除,实际数组大小是否会更改以节省内存?
更详细地说,当从一个大数组列表中删除一个元素时,为数组的空部分保留的内存是否恢复了?这似乎是合乎逻辑的,因为我们扩展了数组,我们可能需要使用这个空间,所以它不会被触及。
但是,如果我们有一个非常大的数组列表并且我们只使用前 10 个左右的元素,编译器(或在运行时)是否会意识到所有额外的空间都被浪费了并恢复它? (实际数组大小会减小吗?(将元素复制到更小的数组中?))
【问题讨论】:
-
@AxelH 没有找到那个,但我更喜欢 Eran 在下面的回答 ;)
-
你的问题也更好!
-
Java 世界中有一些集合可以修剪它们的大小,但通常这不是必需的,因为您只会“修剪”并接下来进行分配......这就是为什么要使用
trimToSize小心。