yugioh trabajo recolector recoleccion ingles español ejemplo definicion collector basura activar java garbage-collection g1gc

java - trabajo - ¿Cómo funciona el Recolector de Basura Basura-Primero?



recolector de basura trabajo (3)

El G1 está muy bien explicado también en esta nueva sesión de JavaOne 2012: G1 Garbage Garbage Performance Tuning [ youtube ], [ PDF ].

Comienzan con la introducción de CMS y G1, su comparación, y luego se explica el análisis y ajuste de G1.

Características de G1

  • Regiones de tamaño fijo : heap dividido en regiones (1Mb - 32MB, ~ 2000, determinado por la VM).
  • Eden, survivor y OldGen representados como un conjunto lógico de regiones .
  • Los objetos vivos son evacuados de una región a otra

Un montón típico de G1 puede verse así:

Aquí hay un resumen de cada fase G1:

1. Colección Young

1.1 Young Phase - Minor GC

  • Evacuación - Stop-The-World Parallel minor GC donde los objetos vivos son evacuados de Young Generation a las regiones de Survivor (tenencia) o OldGen (promoción).
  • Contabilidad : el tamaño del espacio eden / survivor para el próximo GC joven se determina en función de las estadísticas de cada región y según el objetivo del tiempo de pausa establecido por la aplicación. G1 estima cuánto tiempo necesitará para el próximo YoungGC.
  • Cambio de tamaño : G1 ahora puede reducir / cambiar el tamaño de las regiones eden / survivor fácilmente.

1.2 Marca joven / inicial

  • La marca inicial GC joven es una fase inicial de marcado para la colección OldGen que se ejecuta en paralelo con la colección YoungGC. La marca inicial es un proceso de marcado simultáneo paralelo.

2. Colección Old Gen

2.1 Marca inicial - ver 1.2.

2.2 Comentario del GC

  • una pausa de detener el mundo, marcando concurrentemente objetos en vivo
  • contabilidad - para cada región, durante la observación, G1 está rastreando la vida de la región (cuántos objetos hay en vivo en cada región) y las referencias en la región ( Conjunto recordado ) - esto le dice a G1 cuánto tiempo lleva hacer una colección en este región.
  • Regiones vacías reclamadas

2.3. Pausa del GC (mixto)

  • elija regiones con poca vida y recopile algunas de ellas. Por lo tanto, estamos recolectando la "basura primero".
  • la colección real de estas regiones se realiza al mismo tiempo que el próximo Young GC, por lo que no hay una pausa por separado para la colección de OldGen. Por lo tanto, la pausa de GC (mixta) es una colección mixta de YoungGen y una parte del antiguo Gen.
  • Al final de la pausa del GC (mixto) puede haber algo de basura en las regiones de gen antiguas, esto se recogerá más tarde dependiendo de la vida futura, el objetivo del tiempo de pausa y el número de regiones no utilizadas.

3. GC completo

Tenga en cuenta que G1 está destinado a evitar Full GC tanto como sea posible. A partir de Java 7u40, las pausas de FullGC en G1 no están optimizadas y se implementan como una única operación de subprocesos. Cuando use G1, trate de evitar el GC completo: si ve pausas de FullGC, la configuración de su GC probablemente requiera algo de afinación.

Recursos

¿Alguien puede explicar cómo funciona el colector de basura G1, por favor? Todavía no he podido encontrar descripciones completas y fáciles de entender.

Gracias


El recolector divide el montón en regiones de tamaño fijo y rastrea los datos en vivo en esas regiones. Mantiene un conjunto de indicadores, el "conjunto recordado", dentro y fuera de la región. Cuando se considera necesario un GC, primero recoge las regiones con menos datos en vivo (por lo tanto, "basura primero"). A menudo, esto puede significar la recopilación de una región completa en un solo paso: si el número de punteros en una región es cero, entonces no es necesario hacer una marca o barrido de esa región.

Para cada región, rastrea varias métricas que describen cuánto tiempo tardará en recopilarlas. Puede darle una restricción suave en tiempo real sobre los tiempos de pausa, y luego trata de recolectar tanta basura como pueda en ese tiempo limitado.

Hay conversaciones de JavaOne sobre G1 y algunos artículos sobre el tema:


Encontré la página de Oracle en esto extremadamente útil para explicar los conceptos de una manera accesible sin ser demasiado extenso.