usegcoverheadlimit parallelgcthreads java garbage-collection heap-memory g1gc

java - usegcoverheadlimit - jvm parallelgcthreads



¿G1GC todavía no está oficialmente listo para producción? (6)

AFAIK, G1 no es un secreto, está abierto para uso experimental el tiempo suficiente, al menos uno o dos años. Cada JavaOne viene con una sección sobre lo bueno que será G1 :)

De fuentes no oficiales: es uno de los enfoques actuales para los ingenieros de Java, para que la producción de G1 esté lista por fin. Simplemente no estaban listos para abrirlo para JDK 7. Solo sigue esperando :)

Me pregunto cuál es el estado oficial del recolector "basura en primer lugar" (G1) en la versión JDK 7. Me gustaría usar G1 como una alternativa de baja pausa gc a CMS, pero solo si realmente puedo confiar en su robustez.

Antes de que saliera JDK 7, G1 fue anunciado como el nuevo gc brillante que reemplazará al recopilador de CMS e incluso será el gc predeterminado en JDK 7. Sin embargo, ahora con Oracle JDK 7u1, G1 no es el gc predeterminado en ninguna de las máquinas que tengo. intentó.

Aunque ya no es necesario que especifique -XX:+UnlockExperimentalVMOptions cuando use -XX:+UseG1GC en JDK 7, es una función JVM que está oficialmente completamente sin documentar:

Colección de basura y documentación de Java 7 (JDK 7) en G1

El único documento oficial que encontré que menciona que G1 está seriamente desactualizado y fue escrito mucho antes de que JDK 7 fuera publicado

http://www.oracle.com/technetwork/java/javase/tech/g1-intro-jsp-135488.html

Por ejemplo, la documentación oficial de "Java HotSpot VM Options" ( http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html ) documenta cómo habilitar y ajustar los otros recopiladores, pero Ni siquiera se menciona la existencia de G1. ¡Como si no existiera!

Esto es bastante confuso y me pregunto cuál es el estado real del G1 y cuál es su futuro. ¿Es realmente estable todavía? ¿Se han resuelto los problemas restantes (como fugas, fallas falsas y soporte de instrumentación faltante)? Y si es así, ¿por qué Oracle trata al G1GC como un secreto indocumentado (vergonzoso?)? ¿Es posible que G1 sea un proyecto fallido que ahora se descontinúa silenciosamente? ¿O debo pagar por la documentación y el soporte? ¿O es simplemente todavía beta? ¿Alguien me puede aclarar sobre lo que está pasando aquí?


De acuerdo con esto: http://www.oracle.com/technetwork/java/javase/tech/g1-intro-jsp-135488.html ,

El desarrollo de G1 ahora se enfoca principalmente en resolver cualquier problema de confiabilidad restante y mejorar el rendimiento

También,

En términos de tiempos de pausa GC, G1 a veces es mejor y otras veces peor que CMS. Se está trabajando para que G1 sea tan bueno como, si no mejor, que CMS.

Por lo tanto, G1 supuestamente reemplazará a CMS cuando el JDK SE 7 oficial esté fuera.


El lugar para hacer esta pregunta se encuentra en la lista de distribución hotspot-gc-dev .

Si miras a través de los archives , verás que hay mucho trabajo por hacer. Gran parte del correo parece estar confirmado y revisar las solicitudes / comentarios para que estén ocupados trabajando en ello.

No he encontrado ningún anuncio oficial de noticias, pero así es como funciona Oracle. Es posible que pueda preguntar en esa lista de correo cómo creen que van, si está contento con un comentario no oficial y no vinculante de uno de los desarrolladores.

EDITAR: @scravy envió un correo electrónico a la lista de correo, esta es la response recibida:

No creo que haya una respuesta simple a esta pregunta, aunque probablemente no. El enfoque inicial de G1 fue proporcionar pausas razonables para montones extremadamente grandes. Lo que significa que hoy puede que no sea la mejor opción para todos. Sin embargo, creemos que la tecnología tiene ''muchas piernas'', lo que significa que, con la adaptación, puede abordar muchos tipos diferentes de demandas de recolección de basura. Entonces, un día, podría ser efectivamente el recolector predeterminado, pero es demasiado pronto para saberlo con seguridad.

Teniendo en cuenta que los cambios en el comportamiento de GC pueden ser muy perjudiciales para las implementaciones existentes, nos resistimos a hacer cambios de este tipo incluso en las principales versiones sin previo aviso. Entonces, en las versiones actuales, si no especifica un recopilador, intentamos hacer algunas elecciones automáticas simples, pero dudo que hagamos cambios radicales a ese comportamiento en el corto plazo.

Para la pregunta más grande sobre G1 es compatible, la respuesta actual es no. Pero tenga en cuenta que el compromiso de soporte que Oracle brinda a sus clientes pagados por productos compatibles es bastante significativo, y hay mucho más que solo cumplir con los requisitos de funcionalidad y confiabilidad.

Continuamos animando a todos a probar y evaluar G1, y por supuesto, enviarnos comentarios, a medida que continuamos con un desarrollo significativo en G1.

-John

EDITAR: De acuerdo con http://www.oracle.com/technetwork/java/javase/tech/g1-intro-jsp-135488.html parece que G1GC ahora es totalmente compatible.


G1 GC está listo para la producción desde el lanzamiento de la versión 4 de Java 7 update.

En el article Oracle (en El recolector de basura G1), puede encontrar casos de uso reales para G1 GC.

Las aplicaciones que se ejecutan hoy en día con CMS o el colector de basura ParallelOldGC beneficiarían el cambio a G1 si la aplicación tiene uno o más de los siguientes rasgos.

  1. Las duraciones completas de GC son demasiado largas o demasiado frecuentes.
  2. La tasa de asignación de objetos tasa o promoción varía significativamente.
  3. Pausa de recolección de basura larga o pausa no deseada (más de 0.5 a 1 segundo)

Eche un vistazo a la pregunta relacionada para obtener más detalles sobre G1GC y los parámetros clave que se deben ajustar:

Colección de basura y documentación de Java 7 (JDK 7) en G1

En cuanto a sus otras consultas:

¿Es realmente estable todavía? ¿Se han resuelto los problemas restantes (como fugas, fallas falsas y soporte de instrumentación faltante)? Y si es así, ¿por qué Oracle trata al G1GC como un secreto indocumentado (vergonzoso?)? ¿Es posible que G1 sea un proyecto fallido que ahora se descontinúa silenciosamente? ¿O debo pagar por la documentación y el soporte? ¿O solo es beta? ¿Alguien me puede aclarar sobre lo que está pasando aquí?

  1. G1GC es estable.
  2. No he encontrado ninguna fuga en este algoritmo.
  3. Oracle no lo mantuvo sin documentar. Puede encontrar más información sobre G1GC article y here
  4. G1 no es un proyecto fallido y G1GC será el algoritmo GC predeterminado en las versiones más recientes de java ( java 9 )
  5. No necesitas pagar por el soporte. No es beta.


Ya estamos utilizando G1GC, desde hace casi un año y medio. Lo está haciendo muy bien en nuestro sistema de procesamiento de transacciones de misión crítica, y demostró ser un excelente soporte de alto rendimiento, baja pausa, concurrencia, multihilo y gestión de memoria pesada optimizada.

Estamos utilizando la siguiente configuración de JVM:

-server -d64 -Xms512m -Xmx3072m -XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC -XX:+UnlockExperimentalVMOptions -XX:+AggressiveOpts -XX:+DoEscapeAnalysis -XX:MaxGCPauseMillis=400 -XX:GCPauseIntervalMillis=8000 -XX:+UseCompressedOops -XX:NewRatio=50