Mon premier répond blog de votre question: Generations of Garbage Allocation
Ajouter les informations sur le lien:
Le collecteur de Garbage CLR (GC) est un éboueur de génération, également connu sous le garbage collector ephermal.
Il dispose de trois générations:
Génération 0: Il contient tous les objets nouvellement construit qui ne sont jamais examinés par GC.
Generation 1: Le CLR, lorsque initialise, sélectionne une taille de budget kb pour la génération 0. Si la création d'un objet force la génération 0 à dépasser son budget, la récupération de place est démarrée. Les objets qui ne sont pas collectés dans la génération 0 sont déplacés vers la génération 1 et la génération 0 est vidée. Supposons que le budget de la génération 0 soit égal à la taille de 5 objets. Donc, la génération 0 ressemblerait ci-dessous avant la création de l'objet 6:

Après la création de l'objet 6, l'allocation des ordures permet de démarrer ce qui libère les objets ordures 1, 3 et 5 et se déplace 2 et 4 adjacents à chaque dans d'autres générations 1.

La taille du budget de génération 1 est également sélectionnée par CLR lors de l'initialisation. Création d'objet 11 provoque le GC de commencer à nouveau qui peut se déplacer un peu plus d'objets à la génération 1.

Generation 1 est ignoré pour la collecte des ordures jusqu'à ce qu'il atteigne la taille du budget de pour la collecte des ordures, ce qui améliore les performances de GC.
Génération 2:
Au cours de la génération 0 plusieurs collection, génération 1 peut dépasser la limite budgétaire de ce qui cause GC de recueillir les ordures des deux générations. Dans ce cas, les survivants de la génération 1 sont promus à la génération 2, les survivants de la génération 0 sont promus à la génération 1, et la génération 0 est vide.
Supposons que l'objet d'allocation 21 cause l'échec de la récupération de place et le budget de génération 1. 
Alors tas ressemblerait ci-dessous avec l'objet qui a survécu à la génération 1 promu à la génération 2.

Donc, fondamentalement, Génération GC suppose que les objets les plus récents ont plus de probabilité de collecte.
Nous savons que CLR sélectionne les budgets pour les trois générations, mais il peut les modifier car GC est un collecteur à réglage automatique. Si GC constate qu'il y a très peu d'objets survivants après avoir collecté la génération 0, il peut décider de réduire le budget de la génération 0, de sorte que le travail soit moindre. D'un autre côté, si GC collecte la génération 0 et constate qu'il y a beaucoup d'objets survivants, il n'y a pas beaucoup de mémoire récupérée dans le garbage collection. Dans ce cas, le garbage collector augmentera le budget de la génération 0. Le GC modifie également les budgets des générations 1 et 2 en conséquence.
Salut, pouvez-vous me dire quand le collecteur recueille les objets? Après l'exécution de chaque méthode? – Bigeyes
Il n'est pas approprié de poser une question comme un commentaire dans une question de 7 ans. Chaque tutoriel Java vous dira que le GC fonctionne sur un thread séparé au moment de son choix. – duffymo
@duffymo et qu'est-ce que le tutoriel Java a à voir avec la question de Bigeyes? De ma question d'OP saisissante est sur. Net – MaLiN2223