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