Una propuesta para ampliar el ZGC (Z Garbage Collector) planteada por la comunidad Java podría mejorar el rendimiento de las aplicaciones. Según los desarrolladores de Java, al mantener generaciones separadas para objetos jóvenes y viejos, el recolector de basura ZGC podría recolectar con mayor frecuencia objetos jóvenes, que tienden a morir jóvenes. Entre los objetivos específicos de la propuesta de mejora de OpenJDK Propuesta de mejora generacional de Java ZGC (JEP)Los desarrolladores destacan la reducción del riesgo de bloqueo de asignación, la reducción de la carga de memoria dinámica requerida y la reducción de la carga de CPU del recolector de basura. Según la propuesta, estos beneficios deberían lograrse sin una reducción significativa del rendimiento en comparación con el ZGC no generacional.

Diseñado para ofrecer escalabilidad y baja latencia, ZGC ha estado disponible en producción desde Kit de desarrollo Java (JDK) 15 enviado en septiembre de 2020. Con Z Garbage Collector, la mayoría de las tareas se realizan cuando los subprocesos de la aplicación se están ejecutando. Los tiempos de pausa de ZGC se miden en microsegundos, mientras que los tiempos de pausa para el recolector de basura G1 predeterminado varían de milisegundos a segundos. Entonces, según la propuesta, para muchas cargas de trabajo, ZGC puede resolver problemas de latencia relacionados con la recolección de basura.

Aún no hay orientación para una versión de Java específica

ZGC funciona bien cuando los recursos son suficientes. Pero dado que ZGC almacena todos los objetos juntos, independientemente de su antigüedad, debe recopilarlos todos cada vez que se ejecuta. Dado que los objetos jóvenes tienden a morir jóvenes, mientras que los objetos más viejos tienden a quedarse quietos (según la hipótesis generacional débil), recolectar objetos jóvenes requiere menos recursos y libera más memoria, mientras que recolectar objetos viejos requiere más recursos y libera menos memoria. En este momento, el ZGC generacional no apunta a ninguna versión específica del estándar Java. La versión actual, JDK 20, llegó hace una semana y el próximo lanzamiento, JDK 21, está previsto para septiembre. La versión estándar de Java se publica cada seis meses.