JVM aprendizaje -G1 colector

recolector de basura G1

CMS algoritmo para resolver la generación de desechos espaciales y otros defectos en una serie de problemas, HotSpot proporciona otra basura política de cobro, G1 (basura Primera) algoritmo de parámetro -XX:+UseG1GCpara permitir,

algoritmos de recolección de basura G1 se utilizan en gran memoria multi-CPU del servicio, para cumplir con el alto rendimiento, fueron tan lejos como sea posible para cumplir con la recolección de basura tiempo de pausa, diseñado principalmente para los siguientes escenarios:

  • hilos de rosca recolección de basura y de aplicación se ejecutan concurrentemente, y como CMS
  • Evitar larga pausa cuando la compresión de memoria libre
  • Las aplicaciones necesitan tiempo GC pausa más predecible
  • No quiero que sacrificar demasiado el rendimiento rendimiento
  • Sin gran montón de Java

estructura de memoria de almacenamiento dinámico

1, un algoritmo de recolección de basura convencional, tal como el CMS, la estructura de la pila de memoria son como sigue:

 

  • Nueva Generación: eden espacio de 2 + Ge sobreviviente
  • Años: espacio de edad
  • generación permanente: 1.8 antes de la ondulación permanente del espacio
  • espacio Yuan: metaespacio después de 1,8

       El espacio debe ser espacio de direcciones contiguas

2, el algoritmo de G1, con una forma completamente diferente otra organización de la memoria montón, el montón de memoria se divide en una pluralidad de bloques de memoria de igual tamaño (región), cada región es la sección lógicamente contiguo de memoria está estructurado como sigue:

Cada región se etiqueta E, S, O y H, se describen para actuar como un papel de cada región en tiempo de ejecución, donde H no es un algoritmo convencional, que representa la Humongous, lo que indica que estos enormes objetos se almacenan Región (objeto humongous, H-obj), cuando un nuevo objeto es mayor que la mitad del tamaño de la región directamente asignado a uno o más sucesiva nueva Región y etiquetado es H.

el modo GC

G1 está disponible en tres modelos de modo de recogida de basura, gc joven , gc mixta y gc completa , se activa bajo condiciones diferentes.

GC joven

Ocurrido en el algoritmo de generación de GC joven, los objetos generales se asignan memoria en la región de Edén (a excepción de los objetos gigantes), cuando todo lo que no se pueden agotar región eden para la memoria, se disparará un GC joven, este mecanismo de activación y antes joven gc casi terminada la ejecución de un joven GC, los objetos activos se copian en la región sobreviviente o la promoción de la antigua región, la región libre será puesto en la lista libre, a la espera para el siguiente uso.

GC mixta

A medida que más y más objetos promovido a la antigua región viejos años, con el fin de evitar la memoria de pila se ha agotado, el gatillo virtual de un recolector de basura híbrido, que es GC mixto, el algoritmo no es un viejo GC, además de la recuperación de toda la región joven , la recuperación será una parte de la antigua región, a destacar aquí: esa parte de la vieja era, pero no todos de la vieja era, que puede optar por recoger región de edad, lo que puede llevar mucho tiempo el control de la recolección de basura que consumen.

Así que cuando se activa gc mixta?

Primer vistazo a los cms mecanismo de disparo, si se agregan los siguientes parámetros:

-XX: CMSInitiatingOccupancyFraction = 80 
-XX: + UseCMSInitiatingOccupancyOnly

Cuando el uso de la vejez alcanzó el 80%, se disparará una gc cms. Relativa, gc mezclado también tiene un parámetro de umbral -XX:InitiatingHeapOccupancyPercent, cuando los viejos años el tamaño del porcentaje total tamaño de la pila alcanza este umbral, se activará un GC mixto.

GC proceso de implementación mixta es algo similar a la CMS, dividido en los siguientes pasos:

  • marca inicial: proceso de marcado inicial, todo el proceso de la STW, etiquetado objetos accesible desde GC Root
  • concurrente marcado: proceso de marcado concurrente, el hilo de todo el proceso de colector gc y los hilos de aplicaciones pueden ser ejecutadas en paralelo, marca de GC Root objetos deriva de objetos vivos, y recoger diversos objetos información de supervivencia Región
  • Observación: el proceso de etiquetado final, todo el proceso de la STW, aquellos marcados faltante proceso de marcado concurrente, o una referencia interna objeto cambia
  • Limpieza: proceso de recolección de basura, si nos encontramos con una región no objetos vivos, poner a la región se añade a la lista

GC completa

Si la asignación de memoria de objeto demasiado rápido, gc mixta demasiado tarde para recuperarse, lo que lleva hasta el año de edad está lleno, se disparará un GC completa, serie antiguo G1 GC del algoritmo GC completa es la ejecución de una sola rosca, que dará lugar a una producción anormalmente larga pausa, se necesita un ajuste constante, evitar gc completa tanto como sea posible.

 

Supongo que te gusta

Origin www.cnblogs.com/wakey/p/12667047.html
Recomendado
Clasificación