04 28 2019 Primer repaso - MatRJ08/Portafolio_DatosII GitHub Wiki

Bitacora

Gestión de la memoria

Stack

Heap

Punteros

Apuntes

Si la memoria es mal gestionada, se satura por programas pesados

Sin abtraccion

  • Toda la meria es un bloque
  • Solo hay un programa en memoria
  • Multi
    • Hilos
    • Static Relocation (Calcular y recalcular posiciones)
    • Intercambio

bloque de direcciones

  • Espacios para cada programa
  • Multi
    • Dynamic (cada uno tiene un bloque de direcciones propio)

Memoria Virtual

  • Cada programa posee una cantidad de paginas
  • Multi
    • Cargar solo algunas paginas de cada programa

Stack

Lifo

StackFrames(Llamadas a funcion)

Se autogestiona (GoodFriend)

Estructura(Espacio para)

  • Vriables internas
  • Linea que se retorna
  • Parametros

Heap

No se autosugestiona

Cada lenguaje provee un API para manejarlo

Cuando HEAP o STACK

Heap

  • Largos Bloques de Memoria
  • Variables que viven mucho
  • Estructuras dinamicas

Stack

  • Varianbles de Scope Local

Ventajas y desventajas

Heap+

  • Lifetime
  • Tamaño (Se le especifica el tamaño necesario)

Stack+

  • Memoria temporal independiente
  • Evita errores

Heap-

  • Mas trabajo
  • Mas bugs
  • Memoria eventualmente se fragmenta

Stack-

  • Tiempo de vida corto
  • Comunicación restringida (El resultado de las variables se borran)

Punteros

Normalmente se usan para el heap

Dereferenciar un puntero = sacar el valor de memoria

Normalmente quedan en un Bad Value (bloque random)

Siempre inicializar puntero

Se le puede dar Null, si se derefencia se de un error de runtime

Arreglos

La variable apunta a la primera posición

Para acceder a las demas se usan operaciones aritmeticas

Java

Mas lenta la gestion por el garbage collector

Menos bugs

Primero marca y luego libera

https://web.microsoftstream.com/video/f9106af6-6f32-47bd-851c-0f885ef1a7ae