ArrayList

编程

  1. 扩容大小是:当前容量 * 1.5 + 1 为什么加1?极端情况下oldCapacity=1,如果仅仅是1.5倍结果还是1

  2. 如果newCapacity依然比minCapacity小,直接使用minCapacity

  3. 如果newCapacity > MAX_ARRAY_SIZE 最大限制

    • 3.1 判断minCapacity是否大于最大限制。如果是就使用Integer.MAX_VALUE。如果不是则使用MAX_ARRAY_SIZE

其中:MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8:一些虚拟机在复制中保留一些header words。尝试分配更大的数组可能会导致OutOfMemoryError:请求的数组大小超出VM限制

ArrayList 线程不安全

以上是 ArrayList 的全部内容, 来源链接: utcz.com/z/516405.html

回到顶部