JVM - se resumen las condiciones de disparo completa GC y estrategia de resolución

prefacio

Completa GC respetar Minor GC, el STW tope de la rosca de usuario (parar el mundo) durante demasiado tiempo, por lo menos 10 veces más lento, por lo que para evitar, dicho primer GC completo las razones pueden ser generados, disparar problemas y luego dado estrategias de resolución.

 

1, llamar al método System.gc ()

En el llamado código de método System.gc () recomendará la JVM completa GC, pero tenga en cuenta que esto es sólo una propuesta, no realice la JVM es otro asunto niños, pero en la mayoría de los casos se incrementará el número de Full GC, lo que resulta en el rendimiento del sistema soltar, por lo general no lo recomiendan manualmente invocar este método, podemos -XX: + DisableExplicitGC para prohibir RMI llamada System.gc.

 

2, el año de edad (Titular Gen) La falta de espacio
       en el área objetivo del sobreviviente cumple con las condiciones para el ascenso a la vejez, se promovió en el tamaño del objeto antiguo es mayor que la memoria disponible de la vejez, esta vez desencadenará completa GC.

 

. 3, área de memoria metaespacio alcanza un umbral
       de la JDK8 principio, el concepto de nombre permanente (la PermGen) se descartó, y se sustituye por un llamado espacio de almacenamiento metaespacio. Metaespacio utilizar una memoria local en lugar de la memoria de pila, lo que significa que por defecto metaespacio solamente relacionado con el tamaño del tamaño de la memoria local. -XX: MetaspaceSize = 21810376B (aproximadamente 20.8MB) excede este valor activará completa GC, este valor no es fijo, serán ajustados dinámicamente a medida que la JVM está ejecutando, no está asociado con el mismo una pluralidad de parámetros, en detalle Por favor, consulte el artículo jdk8 sintonía metaespacio

4, un derivado estadísticamente GC Minor promovidos al tamaño medio del espacio restante es mayor que la vieja generación de la vejez
superviviente del ascenso a la zona antigua de dos situaciones del objeto:

       Uno de ellos es definir un contador de objetos para cada objeto, si nació el objeto en el área de Edén, y después del primer GC, por lo que será su edad se establece en 1, el objeto en cada región sobreviviente sobrevivió a un GC, el contador de edad más uno, hasta alcanzar el valor por defecto de 15, se moverán a la vieja era, los valores por defecto pueden ser -XX: set MaxTenuringThreshold.
       Otra es que si la JVM encontró objetos de la misma edad región sobreviviente representó más de la mitad de todos los objetos, que será más grande que el objeto se mueva a la vejez, se pueden encontrar en las estadísticas de estos objetos se promovió a la antigua año, años, pero me encontré con que no hay espacio suficiente para colocar estos objetos, que pueden causar completo GC.

5, montón producen grandes objeto supera el valor umbral
       después de establecer PretenureSizeThreshold, la supervivencia a largo plazo de un objeto grande o objetos en la vieja era, típico de objetos de gran tamaño es una cadena larga o una matriz, que se crean en: Este parámetro puede -XX directamente en la vieja era, aunque puede área de Eden se puede colocar en la nueva generación del objeto, cuando se desea colocar antiguo espacio de la JVM es insuficiente si se encuentra, se disparará GC.

6. antiguo de la falta de espacio contiguo

       Si se determina viejo JVM de no hacer lo suficiente espacio contiguo para colocar objetos de gran tamaño, que dará lugar a Full GC, como de espacio disponible en el tamaño de edad es de 200K, pero no continua, memoria contigua, siempre y cuando 100K, y fue promovido al tamaño del objeto antiguo a 120K, debido al espacio continuo 120> 100, el desencadenado GC completa.

 

7, la promoción GC CMS y fallido El fallo del modo simultáneo se produce cuando
completa GC causa de esto puede hacer referencia a este artículo, el siguiente extracto del artículo también: JVM Tuning - GC pausa larga problemas y soluciones

       error de actualización (promoción no), el proceso de GC Minor, sobreviviente no utilizada puede ser insuficiente para dar cabida a los objetos vivos en el Edén y otro sobreviviente, a continuación, el exceso se trasladará a la vieja era, conocido como levantamiento prematuro (Promoción prematuro). Esto dará lugar a un aumento de la supervivencia años de edad objetos corto plazo, puede causar serios problemas de rendimiento. Aún más, si toda una década de edad, menor GC'll hacer completa GC, lo que llevará a atravesar toda la pila, llamado el fracaso de elevación (Promoción fallos).


        CMS en el proceso de arranque, la nueva generación de elevación demasiado rápido, mantenerse al día con incremento de velocidad tasa de recogida de edad de la nueva generación. En la puesta en marcha de la CMS, graves fragmentación años de edad, no puede dar cabida a la nueva generación de levantar objetos de gran tamaño, ya que CMS utiliza marcadores para limpiar, lo que resulta en insuficiencia de espacio contiguo, esta es la desventaja de CMS

resumen

De hecho, se puede encontrar la memoria de pila completa GC generalmente son causadas por dos razones, la memoria, ya sea de edad es demasiado pequeño, ya sea antiguo de memoria contigua es demasiado pequeño. Esto no es nada más de dos puntos, mientras que el área de metadatos metaespacio completa GC puede ser causada por el umbral, se recomienda que las razones detalladas se refieren a otros artículos, no lo haré plagada

 

 

fuente original: https: //blog.csdn.net/Hollake/article/details/90484027

Supongo que te gusta

Origin www.cnblogs.com/yrjns/p/12129119.html
Recomendado
Clasificación