Está en la página 1de 3

Heap y Stack

Trabajo realizado por Edinson Corredor


Ingeniería de sistemas – Séptimo Semestre
Sistemas Operativos
La memoria Stack se usa para almacenar las variables locales que están
en acción mediante a la función donde estas fueron declaradas y también las
llamadas de funciones externas. Estas variables almacenadas en esta memoria
tienen un periodo de ejecución corto y este va hasta que termine la función o
método que se está ejecutando.
Es una estructura dinámica de datos que almacena la información sobre
las subrutinas activas de un programa en ejecución. Cuando hacemos una
llamada a una función, un bloque en el tope de la pila es reservado para guardar
las variables locales junto con algunos datos necesarios para garantizar el
funcionamiento adecuado de la estructura (como la dirección a la que tendrá que
retornar el hilo de ejecución cuando termine la función). Después de retornar, el
bloque de la pila que ocupaba el llamado, se libera para poder utilizarse más
adelante.
Esta estructura de datos utiliza el concepto de LIFO “Ultimo en entrar,
primero en salir” o por sus siglas en ingles “last in first out” Esto hace que sea
más sencillo mantener el control de los bloques que deben ser liberados. Pueden
existir múltiples pilas de ejecución en un programa cuando este es multihilo; cada
hilo tiene su propia pila con la que mantendrá el control de sus llamadas a
funciones.

Fuente:
La memoria Heap es utilizada para almacenar los objetos incluyendo sus
atributos, los objetos almacenados en este espacio de memoria normalmente
tienen un tiempo de duración más prolongado que los almacenados en Stack.
Es una estructura dinámica de datos utilizada para almacenar datos en
ejecución. A diferencia de la pila de ejecución que solamente almacena las
variables declaradas en los bloques previo a su ejecución, el heap permite
reservar memoria dinámicamente. Esta estructura de datos no sigue ninguna
metodología de orden o asignación de memoria, lo cual lo hace algo complicada
para mantener el control de la memoria asignada para cada bloque de ejecución
ya que estos pueden ocuparse o liberarse en cualquier momento.

Fuente:
En conclusión, la memoria Stack es la encargada de almacenar variables locales,
variables de referencia, parámetros y valores de retorno, resultados parciales, el
control de la invocación y retorno de métodos, en cambio, la memoria Heap es la
encargada de almacenar objetos junto con sus características y variables de
instancia, cada una de estas memorias es importante para la ejecución de un
programa, ya que estos necesitan almacenar según sus procesos esta
información.
Bibliografía
Lopez, V. (2011). javaHispano - Certificación - Stack y Heap. Retrieved 25 April 2021, from
http://www.javahispano.org/certificacion/2011/9/27/stack-y-
heap.html#:~:text=El%20Stack%20(Pila)%20se%20utiliza,y%20retorno%20de%20los%20métodos.
&text=El%20Heap%20(Montículo)%20almacena%20objetos%20y%20sus%20variables%20de%20i
nstancia.

Ruelas, U. (2017). Diferencias entre heap y stack. Retrieved 25 April 2021, from
https://codingornot.com/diferencias-entre-heap-y-stack

Jayo, E. (2020). Explicando la memoria Stack y Heap de Java. Retrieved 25 April 2021, from
https://edgarjayo.wordpress.com/2020/10/30/explicando-la-memoria-stack-y-heap-de-java-3-3/

Pointers and dynamic memory - stack vs heap. (2013). Pointers and dynamic memory - stack vs
heap [Video]. Retrieved from https://www.youtube.com/watch?v=_8-ht2AKyH4

También podría gustarte