Skip to content

Educational repository from the Java Advanced Bootcamp at Código Facilito. Demonstrates JVM memory management with Heap, Stack, and Metaspace, including simulations of OutOfMemoryError, StackOverflowError, and Garbage Collector behavior.

Notifications You must be signed in to change notification settings

tatianaborda/memorydemo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

🧠 Memory Demo – Gestión de Memoria y Garbage Collection en la JVM

Java JVM Garbage Collector Código Facilito

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.


📚 Conceptos Cubiertos

  • 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

⚡ Escenarios de Demostración

Este repositorio incluye programas de ejemplo que permiten visualizar el comportamiento de la JVM:

1. 💥 Simulación de OutOfMemoryError

  • Asignación continua de arrays grandes hasta llenar el Heap
  • Uso de Runtime.getRuntime() para monitorear memoria

2. 📚 Simulación de StackOverflowError

  • Recursión infinita hasta desbordar la pila de llamadas

3. 🗑️ Demo de Garbage Collector

  • Creación de objetos temporales, uso de System.gc() y métricas de memoria
  • Permite probar distintos recolectores (-XX:+UseSerialGC, -XX:+UseG1GC, etc.)

🛠️ Cómo Ejecutar

Clonar el repositorio

git clone https://github.com/tatianaborda/memorydemo.git
cd memorydemo

Compilar y ejecutar

javac MemoryDemo.java
java -Xms512m -Xmx512m -Xss256k -XX:+UseG1GC MemoryDemo

Nota: Podes probar con diferentes flags de la JVM para observar cómo cambia el comportamiento de la memoria y del GC.


🔧 Ejemplos de Parámetros JVM

Tamaño del Heap

java -Xms512m -Xmx2g MemoryDemo

Tamaño de la Pila (Stack)

java -Xss256k MemoryDemo

Selección de Garbage Collector

# G1 Garbage Collector
java -XX:+UseG1GC MemoryDemo

# ZGC (Low-latency collector)
java -XX:+UseZGC MemoryDemo

# Shenandoah GC
java -XX:+UseShenandoahGC MemoryDemo

📖 Referencias


👩‍🏫 Sobre la Instructora

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.


Si este proyecto te ayudó a entender mejor la JVM, te invito a dejarle una estrella al repo!

About

Educational repository from the Java Advanced Bootcamp at Código Facilito. Demonstrates JVM memory management with Heap, Stack, and Metaspace, including simulations of OutOfMemoryError, StackOverflowError, and Garbage Collector behavior.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages