ArrayList是一个动态数组,也是一个对象。
创建一个ArrayList对象,该对象存储在堆内存中,是一块连续的内存区域。
ist是使用数组实现的。这个数组的内存是连续的,相邻元素之间没有其他内存。
2.对ArrayList进行索引时,速度比原生数组慢,因为需要使用get方法,这是一个函数调用,而使用[]直接访问数组,相当于直接使用内存地址。当然,速度比函数调用快。
3.创建新的ArrayList时,JVM会分配一块默认或指定大小的连续内存区域(封装为数组)。
4.每次添加元素时,都会检查容量,如果不足,就会创建一个新的连续内存区域(大小等于初始大小+步长),并且也会创建该内存区域。封装为数组,并将原内存区域的数据复制到新的内存区域,然后使用ArrayList中引用原封装数组对象的引用变量来引用新的数组对象:
elementData=(elementData,newCapacity);
5.集合内存分配和初始化过程图解
上一篇:微星x570内存混插不开机
下一篇:java内存模型详细图解