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:+UseG1GC
para 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:
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
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