ArrayList
扩容大小是:当前容量 * 1.5 + 1 为什么加1?极端情况下
oldCapacity=1
,如果仅仅是1.5倍结果还是1如果
newCapacity
依然比minCapacity
小,直接使用minCapacity
。如果
newCapacity
> MAX_ARRAY_SIZE 最大限制- 3.1 判断
minCapacity
是否大于最大限制。如果是就使用Integer.MAX_VALUE
。如果不是则使用MAX_ARRAY_SIZE
- 3.1 判断
其中:MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8
:一些虚拟机在复制中保留一些header words
。尝试分配更大的数组可能会导致OutOfMemoryError:请求的数组大小超出VM限制
ArrayList 线程不安全
以上是 ArrayList 的全部内容, 来源链接: utcz.com/z/516405.html