Repositorio educativo del Bootcamp de Java Avanzado en Código Facilito), creado por Tatiana Borda.
Este proyecto muestra cómo funciona la gestión de memoria en la JVM, explorando las áreas de memoria (Heap, Stack, Metaspace), el comportamiento de los Garbage Collectors y la simulación de errores comunes como OutOfMemoryError y StackOverflowError.
- Arquitectura de la JVM: Class Loader, Runtime Data Areas, Execution Engine
- Áreas de memoria: Heap, Stack y Metaspace
- Generacionalidad en memoria: Young Generation (Eden + Survivor spaces) y Old Generation
- Errores comunes: Memory Leaks, OutOfMemoryError, StackOverflowError
- Garbage Collectors: Serial, Parallel, G1, ZGC, Shenandoah, Epsilon
- Parámetros de tuning:
-Xmx,-Xms,-Xss,-XX:+UseG1GC
Este repositorio incluye programas de ejemplo que permiten visualizar el comportamiento de la JVM:
- Asignación continua de arrays grandes hasta llenar el Heap
- Uso de
Runtime.getRuntime()para monitorear memoria
- Recursión infinita hasta desbordar la pila de llamadas
- Creación de objetos temporales, uso de
System.gc()y métricas de memoria - Permite probar distintos recolectores (
-XX:+UseSerialGC,-XX:+UseG1GC, etc.)
git clone https://github.com/tatianaborda/memorydemo.git
cd memorydemojavac MemoryDemo.java
java -Xms512m -Xmx512m -Xss256k -XX:+UseG1GC MemoryDemoNota: Podes probar con diferentes flags de la JVM para observar cómo cambia el comportamiento de la memoria y del GC.
java -Xms512m -Xmx2g MemoryDemojava -Xss256k MemoryDemo# G1 Garbage Collector
java -XX:+UseG1GC MemoryDemo
# ZGC (Low-latency collector)
java -XX:+UseZGC MemoryDemo
# Shenandoah GC
java -XX:+UseShenandoahGC MemoryDemo- Bootcamp de Java Avanzado – Código Facilito
- Oracle Docs – JVM GC Tuning
- Baeldung – JVM Garbage Collectors
Creado por Tatiana Borda para el Bootcamp de Java Avanzado en Código Facilito.
Con un enfoque en ejemplos prácticos para entender a fondo el funcionamiento de la JVM.
- GitHub: @tatianaborda
- LinkedIn: Tatiana Borda
- YouTube: Alien Explorer
⭐ Si este proyecto te ayudó a entender mejor la JVM, te invito a dejarle una estrella al repo!