El Java Garbage Collector es uno de los conceptos que mas cuesta entender a la gente cuando empieza a programar en Java. ¿Cómo funciona el Java Garbage Collector exactamente?. Java divide la memoria en dos bloques fundamentales , Young generation y Old generation.
En la zona de Young Generation se almacenan los objetos que se acaban de construir en el programa . Esta zona de memoria se divide en Eden Space ,Survivor Space (S0 y S1)
La zona de Eden es la zona en la que los objetos que acabamos de construir se almacenan.
Cuando el recolector de basura pasa , elimina todos los objetos que ya no dispongan de referencias en el Eden Space y los supervivientes los mueve al Survivor Space.
El recolector de basura volverá a pasar otra vez y si queda algún objeto superviviente en el Survivor Space S0 lo moverá al Survivor S1
Después de varias pasadas del recolector de basura los objetos que todavía están vivos en el Survivor Space dejan de ser considerados Young Generation y pasan a ser considerados Old Generation .
Java Garbage Collector Old Generation
¿Cómo funciona la zona de Old Generation?. Esta zona esta divivida en dos partes , la primera se denomina Tenured Generation y es donde los objetos que tienen un ciclo de vida largo se almacenan. La segunda zona se denomina Permanent Generation y es donde están cargadas las clases Java que la JVM necesita.
Así pues cuando nosotros tenemos objetos que han sobrevivido a varios garbage collectors pasan de el Survivor Generation Space a Tenured Generation Space.
Finalmente el recolector de basura también pasará por el Tenured Space para liberar objetos. Esta operación se realizará de una forma mucho más espaciada y cuando el espacio se encuentre practicamente lleno.
Para ampliar información:
Otros artículos relacionados :