Java 10 - Recolección de basura mejorada
JEP 304 - Interfaz de recolección de basura
Antes de Java 10, los componentes de implementación de GC (Garbage Collector) estaban dispersos dentro del código base y no se podían reemplazar fácilmente. Con Java 10, se introduce la interfaz Garbage-Collector para que se puedan conectar implementaciones alternativas de GC. También ayuda a aislar la base del código de diferentes implementaciones de recolección de basura. Esta característica es parte de JEP 304.
JEP 307 - GC completo en paralelo para G1
Java 9 introdujo el recolector de basura G1 (Garbage First). G1 evita la recolección completa de elementos no utilizados, pero en el caso de subprocesos simultáneos, busque la recolección y la memoria no se recupere lo suficientemente rápido, lo que afectará la experiencia del usuario. Con Java 10, ahora G1 usará una recolección de basura completa alternativa.
Con este cambio, G1 mejora su latencia en el peor de los casos mediante el uso de un GC completo en paralelo. En la actualidad, G1 utiliza un algoritmo de marcado-barrido-compacto de un solo subproceso. Con JEP 307, un subproceso paralelo iniciará el algoritmo mark-sweep-compact. El número de subprocesos se puede controlar usando la siguiente opción.
$java -XX:ParallelGCThreads=4
Java