La memoria se
maneja de dos
formas; Estática y
dinámica.
Memoria estática
La asignación de memoria
para algunos elementos fijos
del programa que es
controlada como el
compilador se le llama
asignación de memoria
estática
Memoria estática: Define la cantidad de memoria necesaria para un
programa durante el tiempo de compilación. El tamaño no puede
cambiar durante el tiempo de ejecución del programa. Algunos
lenguajes de programación utilizan la palabra "static" para especificar
elementos del programa que deben almacenarse en memoria
estática
Elementos que residen en memoria
estática: Código del programa, variables
definidas en la selección principal del
programa, las cuales pueden solo cambiar
su contenido, no su tamaño. Todas aquellas
variables declaradas como estáticas en
otras clases o módulos
La memoria estática se libera
cuando el programa finaliza
su ejecución.
Memoria dinámica
La asignación y posible
recuperación de memoria
durante la ejecución de un
programa y bajo su control, se le
llama asignación de memoria
dinámica
Memoria dinámica. Define el tamaño
necesario para un programa en tiempo de
ejecución. El tamaño de los elementos
pueden cambiar durante la ejecución del
programa. Almacena todos los elementos
definidos con la palabra "new" en un
programa
Las variables dinámicas son aquellas que crecen de
tamaño o se reducen durante la ejecución de un
programa, estas se almacenan en un espacio de
memora llamado heap. El heap localiza en la región
de memoria que está encima del stack. Algunos
lenguajes de programación permiten que el
programador asigne y desasigne manualmenta la
memoria. Java utiliza un recolector de basura
La memoria dinámica
se libera de dos
formas
Expllicita. EL
programador decide
cuando un elemento
debe ser elimidado de la
memoria. El LP provee
mecanismos para
liberación de memoria.
Implicita. El sistema decide que elementos deben ser eliminados para recuperar el espacio de
memoria que ocupan. El sistema cuenta con un "recolector de basura"