works recolector how generations garbagecollector forzar example español ejemplo como collector basura activar java garbage-collection

recolector - java gc generations



Múltiples recolectores de basura en Java (2)

Supongo que tienen piscinas superpuestas.

Esta suposición es errónea. PS Scavenge se utilizará en la generación joven (eden, survivor) y PS MarkSweep se usará en la generación anterior. La única "superposición" es que PS Scavenge moverá los objetos a la generación anterior una vez que hayan estado alrededor durante un tiempo y dejará que PS MarkSweep se ocupe de ellos.

La ventaja de tener diferentes recolectores de basura para diferentes agrupaciones es que un algoritmo que funciona bien para los objetos en la agrupación de eden no necesariamente funcionará bien para los objetos de la generación anterior.

Este artículo cubre las diferentes opciones para diferentes recolectores de basura que trabajan juntos.

En cuanto a las colecciones "principales" que ocurren cuando no hay espacio para mover objetos a la generación anterior, este documento técnico (ciertamente antiguo) de Sun dice lo siguiente:

... el algoritmo de colección de generación joven no se ejecuta. En su lugar, el algoritmo de recopilación de la generación anterior se utiliza en todo el montón.

Cada proceso de Java que comienzo en mi máquina parece tener dos recolectores de basura por defecto. Estoy comprobando esto a través de JConsole.

Ejemplo - para mi Eclipse actualmente en ejecución.

PS MarkSweep

Collection Count - 221 Collection Time - 102118 Memory Pool Names - java.lang.String[4]

PS Scavenge

Collection Count - 241 Collection Time - 2428 Memory Pool Names - java.lang.String[2]

Supongo que tienen piscinas superpuestas. ¿Cómo trabajan juntos dos recolectores de basura cuando usan las mismas piscinas (Eden, survivor, old gen)? ¿No hay superposición en el movimiento de objetos entre grupos (como el movimiento de un sobreviviente a otro cuando se llama el segundo algoritmo)? Incluso si no lo es, ¿por qué necesitamos más de un colector por grupo?

He leído este artículo en GC . Se refieren al uso de diferentes colectores para diferentes GC mayores y menores, pero no parece haber ninguna referencia al uso de múltiples colectores en el mismo grupo.


Forma el artículo que has proporcionado:

Normalmente, una fracción de los objetos supervivientes de la generación joven se mueven a la generación titular durante cada colección menor. Eventualmente, la generación titular se llenará y deberá ser recolectada, lo que resultará en una gran colección, en la cual se recolectará todo el montón. Las colecciones principales suelen durar mucho más que las colecciones secundarias porque se trata de un número significativamente mayor de objetos.