【发布时间】:2017-03-24 13:50:36
【问题描述】:
假设我有一个字符串数组列表。 我使用 Function ensureCapacity() 并将其容量设置为 50。
但我只添加了 10 个字符串元素,剩下 40 个内存被浪费了。
之后我使用trimToSize() 函数。
我的问题是“trimToSize() 函数是否节省了我的 40 内存。”?
【问题讨论】:
标签: memory arraylist size trim capacity
假设我有一个字符串数组列表。 我使用 Function ensureCapacity() 并将其容量设置为 50。
但我只添加了 10 个字符串元素,剩下 40 个内存被浪费了。
之后我使用trimToSize() 函数。
我的问题是“trimToSize() 函数是否节省了我的 40 内存。”?
【问题讨论】:
标签: memory arraylist size trim capacity
我假设您在谈论 Java,因为 Java ArrayList 具有您提到的那些方法,例如 trimToSize()。并引用该方法的javadoc:
将此 ArrayList 实例的容量调整为列表的当前大小。应用程序可以使用此操作来最小化 ArrayList 实例的存储。
所以答案是:是的,完全正确。
但请记住:这将“节省”您所需的 40 个对象引用的空间。因此,您是否想要在该列表中存储字符串、整数或 byte[] 对象并不重要。
除此之外:除非我们谈论的是资源关键型环境;比如一些嵌入式系统,你不必太担心 40 个列表槽。也许大约 100K;或 1000 万个插槽;但不是 40 左右。
【讨论】: