Gestión de memoria en Java

Una vez desarrollado correctamente un programa en Java, corregidos todos sus errores sintácticos, se procede a la ejecución del mismo comprobando, en ese momento, su correcto funcionamiento.

Cuando un programa está en ejecución, en memoria se guardarán todo su código para que de esta forma el procesador pueda ir ejecutando cada una de las lineas de código del programa.

Por otra parte, los datos correspondientes al programa en Java que fundamentalmente vienen definidos por variables y objetos también serán guardados en la memoria. No obstante, estas variables y objetos no quedarán guardados en la misma sección de la memoria ya que en la misma habrán dos zonas claramente definidas denominadas respectivamente STACK y HEAP.

En el STACK se guardarán las variables comúnmente utilizadas en el programa, por ejemplo:

int x=3;

char letra=’v’;

float numero=3,8;

También se dice que en el apartado STACK se guardan los datos primitivos como por ejemplo variables de tipo entero, float, char, etc, y, por otra parte en la sección HEAP se guardarán los datos dinámicos creados en tiempo de ejecución tales como los objetos. Supongamos que tenemos la clase coche y a partir de ella creamos una instancia de la misma para definir un objeto de nombre coche_rojo. Este nuevo objeto con toda su información será guardado en el apartado HEAP pero, la referencia al mismo, es decir la variable que contiene la dirección de memoria en la que se encuentra guardado el objeto siempre se ubicará en el apartado STACT en la que se guardan todos los datos primarios anteriormente comentados.

Dado un programa en Java con la siguiente declaración de variables primarias y un objeto coche_rojo, seguidamente podemos ver un esquema en el que se muestra int x;cómo y dónde van a ser guardadas:

int x;

char letra;

float numero;

Coche as coche_rojo;