2012-09-12 24 views

Respuesta

17

Una generación de GC se refiere a la cantidad de recolecciones de basura que un objeto sobrevive.

Todos los objetos comienzan en la generación 0. Cuando se produce una recolección de basura, y no se puede recoger un objeto N de generación, se mueve a la generación N + 1.

Las generaciones se utilizan para mejorar el rendimiento de la recolección de basura. En general, es cierto que la generación 0:

  1. es una pequeña fracción de todo el montón de tamaño
  2. tiene una gran cantidad de objetos de corta vida.

Por lo tanto, cuando se produce la recolección de basura, el recolector de basura comienza por recoger la generación 0, que será rápida. Si se puede liberar suficiente memoria, no hay necesidad de mirar a las generaciones anteriores, y por lo tanto, la recolección puede suceder rápidamente.

Se pueden escribir libros sobre el tema; pero para empezar, hay algunos detalles importantes en this article, o el reference here.

+0

Driis: - "No hay necesidad de mirar generaciones anteriores" significa? Lo que estoy recibiendo aquí es que si hay suficiente memoria, entonces la Generación N y N + 1 no se verán. ¿Está bien o me estoy perdiendo algo? –

+0

+1. @RahulTripathi, solo hay 3 generaciones (0, 1, 2) que tienen conjuntos de reglas específicos cuando cada generación se incluye en la colección. Los enlaces provistos por driis (y cualquier artículo que he visto hasta ahora) entran en detalles sobre cada una de las generaciones. –

+0

@RahulTripathi sí, y como comenta Alexei, hay generaciones 0, 1 y 2. Se dice que los objetos en la generación 2 son objetos de larga vida. – driis

Cuestiones relacionadas