La Red de Conocimientos Pedagógicos - Currículum vitae - En JAVA, ¿cuál es la asignación de memoria de ArrayList?

En JAVA, ¿cuál es la asignación de memoria de ArrayList?

ArrayList es una matriz dinámica y un objeto.

Cree un objeto ArrayList, que se almacena en la memoria del montón y es un área de memoria continua.

1. ArrayList se implementa utilizando una matriz. La memoria de esta matriz es continua y no hay otra memoria entre elementos adyacentes.

2. Al indexar ArrayList, la velocidad es más lenta que la de una matriz nativa porque hay que usar el método get, que es una llamada a función, y se accede a la matriz directamente usando [], que es equivalente a operar directamente la dirección de memoria. Por supuesto, la velocidad es más rápida que las llamadas a funciones.

3. Al crear una nueva ArrayList, la JVM asigna un área de memoria continua de tamaño predeterminado o especificado (encapsulada como una matriz).

4. Cada vez que se añade un elemento se comprobará la capacidad. Si es insuficiente se creará una nueva área de memoria continua (tamaño igual al tamaño inicial + tamaño de paso), que también se irá. se encapsulará en forma de matriz, y los datos del área de memoria original se copiarán a una nueva área de memoria, y luego usará la variable de referencia en ArrayList que hace referencia al objeto de matriz encapsulado original para hacer referencia al nuevo objeto de matriz:

elementData = Arrays.copyOf(elementData, nuevaCapacidad);