El Java Garbage Collector és un dels conceptes que més costa d’entendre a la gent quan comença a programar en Java. Com funciona el Java Garbage Collector exactament ?. Java divideix la memòria en dos blocs fonamentals, Young generation i Old generation.
A la zona de Young Generation s’emmagatzemen els objectes que s’acaben de construir al programa. Aquesta zona de memòria es divideix en Eden Space, Survivor Space (S0 i S1)
La zona de Eden és la zona en la qual els objectes que acabem de construir s’emmagatzemen.
Quan el recol·lector d’escombraries passa, elimina tots els objectes que ja no disposin de referències a Eden Space i els supervivents els mou a l’Survivor Space.
el recol·lector d’escombraries tornarà a passar una altra vegada i si queda algun objecte supervivent en el Survivor Space S0 el mourà a l’Survivor S1
Després de diverses passades de l’recol·lector d’escombraries dels objectes que encara són vius en el Survivor Space deixen de ser considerats Young Generation i passen a ser considerats Old Generation.
Java Garbage Collector Old Generation
Com funciona la zona d’Old Generation ?. Aquesta zona aquesta divivida en dues parts, la primera es denomina tenured Generation i és on els objectes que tenen un cicle de vida llarg s’emmagatzemen. La segona zona es denomina Permanent Generation i és on estan carregades les classes Java que la JVM necessita.
Així doncs quan nosaltres tenim objectes que han sobreviscut a diversos garbage collectors passen de l’Survivor Generation Space a tenured Generation Space.
Finalment el recol·lector d’escombraries també passarà pel tenured Space per alliberar objectes. Aquesta operació es realitzarà d’una forma molt més espaiada i quan l’espai es trobi pràcticament ple.
Per ampliar informació: Oracle Java Garbage Collector
Altres articles relacionats: Java Collection Performance, Java Fluid Interface, Java Threads