Explica el modelo de memoria de Java: heap, stack, metaspace y garbage collection.
Respuesta
- Heap: donde viven todos los objetos; compartido por todos los threads; dividido en generación joven (objetos nuevos, se recogen a menudo y con poco coste) y generación vieja (supervivientes, se recogen menos).
- Stack: uno por thread; guarda frames de métodos con variables locales y referencias.
- Metaspace: definiciones de clases y metadatos (fuera del heap, crece con la memoria nativa).
- GC: encuentra los objetos que ya no son alcanzables desde las raíces (variables del stack, campos static) y los libera. Collectors comunes: G1 (por defecto), ZGC, Parallel.
- Errores comunes:
OutOfMemoryError: Java heap space (heap lleno o fuga), StackOverflowError (recursión profunda o infinita).
Practica esta pregunta en Repaso