Recent comments

JavaSE 14 Memoria Stack y Heap Leccion


Como en muchos lenguajes de programación, la memoria RAM (Random Access Memory) se utiliza para almacenar la información de nuestro programa mientras éste se ejecuta. Java ejecuta un proceso, y a su vez internamente existen dos clasificaciones para almacenar los valores de nuestros programas, conocidos como memoria Stack y Memoria Heap.

La memoria Stack se utiliza para almacenar las variables locales y las llamadas de funciones en Java. Las variables almacenadas en este espacio de memoria normalmente tienen un periodo de vida corto,
únicamente mientras termina la función o método en el que se están ejecutando.

La memoria Heap se utiliza para almacenar los objetos Java, incluyendo sus atributos. Los objetos
almacenados en este espacio de memoria normalmente tienen un tiempo de duración más prolongado.
Esto quiere decir que las varibles que creamos, como podemos observar en la figura, no almacenan el
objeto en sí mismo, sino solo guarda la referencia del objeto. En la figura podemos observar que la
referencia del objeto se representa por un valor hexadecimal (0x333), el cual contiene la dirección de
memoria donde está almacenado el objeto, y por lo tanto la variable local p1 almacena únicamente esta referencia de memoria.

Esto es muy importante para temas como la recolección de objetos en Java, debido a que el recolector de basura únicamente podrá eliminar los objetos que no estén siendo apuntados por ninguna variable. De esta manera el recolector de basura (garbage collector) puede buscar aquellos objetos en la memoria heap que ya no estén siendo referenciados por ninguna otra variable y finalmente liberar el espacio en memoria que ocupaba dicho objeto.

Con esto podemos agregar otra importante distinción entre clase y objeto. Una clase define un tipo para ser posteriormente instanciado, es decir, con el objetivo de crear objetos. Esto quiere decir que un objeto ocupa un espacio real en memoria, y son los objetos los que utilizaremos en la mayoría de nuestros programas para enviar y recibir mensajes mediante el uso de sus métodos.


No hay comentarios.