【发布时间】:2011-03-23 20:17:43
【问题描述】:
我了解容量是 ArrayList 中可能包含也可能不包含引用对象的值的元素或可用空间的数量。我正在尝试更多地了解容量的概念。
所以我有三个问题:
1) 从内存的角度定义容量代表什么的好方法有哪些?
...分配给 ArrayList 的(连续?)内存?
...ArrayLists 在(堆?)上的内存占用?
2) 如果上述情况属实,那么改变容量需要某种方式的内存管理开销?
3) 有人举过 #2 是或可能是性能问题的例子吗?除了可能不断调整容量的大量大型 ArrayList 之外?
【问题讨论】:
-
如果你知道 C,你会做内存分配之类的事情,但是是的,它们会随着内存的动态增长而重新分配内存(我认为是 1.75 或其他因素)总是最好在知道大小的情况下进行实例化,否则为您在 3 中说过,当您添加大量数据时,它会分配大量空白空间。我会让更了解内存分配以及Java如何提供真正答案的人提供真正的答案
-
(我认为是 1.75 或其他因素) 公式是
int newCapacity = (oldCapacity * 3)/2 + 1;