La máquina virtual y la plataforma Java se está convirtiendo en el pilar de multiples lenguajes: Java, Scala, Groovy, Clojure, Ceylon, JRuby... pero muchos desarrolladores no conocen como funciona por dentro tanto el sistema de memoria como el recolector de basura. Este conocimiento es fundamental y puede marcar la diferencia entre dos programadores.
Esta charla consisitirá en una introducción a la gestión de memoria de la JVM (Hotspot), cómo trabaja el recolector de basura o algunas opciones para poder configurar las opciones por defecto.
Si alguna vez te has cruzado con un OutOfMemoryError y no entendistes la línea que copiastes de StackOverflow: esta es tu charla.
8. With CMS GC, the full collection is serial and STW,
hence your application threads are stopped for the
entire duration while the heap space is reclaimed
and then compacted.
The duration for the STW pause depends on your
heap size and the surviving objects.
http://www.infoq.com/articles/G1-One-Garbage-Collector-To-Rule-Them-All
9. Con el recolector CMS, la recolección es “serie” y
STW, y los hilos de tu aplicación serán detenidos
por la duración completa mientras el espacio del
“heap” es recuperado y compactado.
La duración de la pausa STW dependerá del
tamaño del “heap” y de los objetos supervivientes.
http://www.infoq.com/articles/G1-One-Garbage-Collector-To-Rule-Them-All
32. Stop the World (STW)
- Parada global de todos los hilos de ejecución para
realizar recolección de basura
- El contrario puede ser CONCURRENTE
○ La recolección se ejecuta a la vez que el
programa
34. Paralelo
● La ejecución se realiza en varios hilos de ejecución
● Aprovecha sistemas con múltiples CPUs
● Por contra puede ser SERIE
○ Sólo se ejecutaría en un hilo
36. Incremental
● El trabajo de recolección no se realiza en un único
paso sino en varias fases o pasos
● Por el contrario puede ser MONOLÍTICO
○ Todo se ejecuta en un sólo paso
56. GC’s en OpenJDK Hotspot
● Serial Collector
● Parallel Collector
● CMS Collector
● G1 (Garbage First) Collector
57. Parallel Collector
YOUNG GENERATION OLD GENERATION
Paralelo Serie / Paralelo
Monolítico
Stop-The-World
Copying Mark / Sweep / Compact
58. GC’s en OpenJDK Hotspot
● Serial Collector
● Parallel Collector
● CMS Collector
● G1 (Garbage First) Collector
59. Concurrent Mark & Sweep
YOUNG GENERATION OLD GENERATION
Paralelo Serie Y Paralelo
Monolítico Incremental
Stop-The-World STW Y Concurrente
Copying Mark and Sweep
60. Concurrent Mark & Sweep
1. Initial Mark
2. Concurrent Mark
3. Remark
4. Concurrent Sweep
95. Configuraciones
-Xmx / -Xms
Tamaño máximo y mínimo del HEAP
-XX:MaxGCPauseMillis=n
Recomendación de pausas
-XX:SurvivorRatio=n
Tamaño del espacio de supervivientes
98. 1. Estructura de la memoria
2. Conceptos generales de GC
3. Tipos de recolectores de Hotspot
4. Configuración de Hotspot
99. Con el recolector CMS, la recolección es “serie” y
STW, y los hilos de tu aplicación serán detenidos
por la duración completa mientras el espacio del
“heap” es recuperado y compactado.
La duración de la pausa STW dependerá del
tamaño del “heap” y de los objetos supervivientes.
http://www.infoq.com/articles/G1-One-Garbage-Collector-To-Rule-Them-All