Unidad 2

10
UNIDAD 2 MANEJO DE MEMORIA

Transcript of Unidad 2

Page 1: Unidad 2

UNIDAD 2

MANEJO DE MEMORIA

Page 2: Unidad 2

• La administración de memoria de una computadora es una tarea fundamental debido a que la cantidad de memoria es limitada.

• La ejecución de un programa requiere que diversos elementos se almacenen en la memoria:– Código del programa (instrucciones)– Datos

• Permanentes• Temporales

– Direcciones para controlar de flujo de la ejecución del programa.

Page 3: Unidad 2

Memoria estática

• Es decir, es el espacio de memoria que se crea al declarar variables, arreglos o matrices de forma estática y cuyo tamaño no podemos modificar durante la ejecución del programa ni liberar el espacio que ocupa.

• Es la memoria que se reserva en el momento de la compilación, antes de que se ejecute el programa.

Page 4: Unidad 2

Desventaja de la memoria estática

• La cantidad de memoria se reserva antes de conocer los datos concretos del

problema a resolver, lo cual lleva siempre a un máximo de memoria que

en la mayor parte de las ocasiones no se utiliza.

Page 5: Unidad 2

Memoria dinámica

• Define el tamaño del espacio de memoria necesario para un programa en tiempo de ejecución.

• El tamaño de los elementos puede cambiar durante la ejecución del programa.

Page 6: Unidad 2

Manejo de memoria.

• La memoria está dividida en tres partes:

– Zona de Datos– Stack – Heap

Page 7: Unidad 2

Zona de datos.

• La Zona de Datos es donde guardamos las instrucciones del programa, las clases, los métodos, y las constantes.

• Esta parte de la memoria es totalmente fija, y nada durante el tiempo ejecución lo puede cambiar.

Page 8: Unidad 2

Stack & heap• Durante la ejecución de un programa, se

utilizan varias zonas de memoria bien diferenciadas para guardar los parámetros, el contexto de la ejecución, las variables locales, el código, etc.... – Pila de llamadas (call stack).– Área de datos dinámicos, conocida como el

montón (heap),– Área de datos estáticos.– Área de código.

Page 9: Unidad 2

• Cada subprograma (procedimiento, función, método, etc.) requiere una representación de sí en tiempo de ejecución.

• Estas representaciones se almacenan en el stack de ejecución con el fin de controlar el flujo de ejecución del programa.

Page 10: Unidad 2

public class factorial { public static int calculaR (int N) { if (N==1) return 1; else return N* factorial.calculaR(N-1); }

public static int calculaC (int v) { int i, F=1; if (v==1) return 1; else for (i=v; i>0; i--) F=F*i; return F; }}

import java.io.*;public class Fact{public static void main(String[] args) throws IOException{ BufferedReader leer= new BufferedReader (new InputStreamReader (System. in)); int valor; System.out.print("Escribe el número: "); System.out.println(); valor=Integer.parseInt(leer.readLine()); System.out.println("CALCULA FACTORIAL CON RECURSIVIDAD (STACK)"); System.out.println(factorial.calculaR(valor)); System.out.println("CALCULA FACTORIAL CON CICLOS (MEMORIA ESTATICA)"); System.out.println(factorial.calculaC(valor));}}