Java 10 - Coleta de lixo aprimorada
JEP 304 - Interface do Coletor de Lixo
Antes do Java 10, os componentes de implementação do GC (Garbage Collector) estavam espalhados na base de código e não eram facilmente substituíveis. Com o Java 10, a interface Garbage-Collector é introduzida para que implementações alternativas de GC possam ser conectadas. Também ajuda a isolar a base de código de diferentes implementações de coleta de lixo. Este recurso faz parte do JEP 304.
JEP 307 - GC Completo Paralelo para G1
O Java 9 introduziu o coletor de lixo G1 (Garbage First). O G1 evita a coleta de lixo completa, mas no caso de encadeamentos simultâneos, procure coleta e a memória não seja revivida com rapidez suficiente, a experiência do usuário é afetada. Com o Java 10, agora o G1 usará uma Coleta de Lixo Completa.
Com essa alteração, o G1 melhora sua latência de pior caso usando um GC completo em paralelo. Atualmente, o G1 usa um algoritmo de marcação-varredura-compacto de encadeamento único. Com JEP 307, um thread paralelo iniciará o algoritmo mark-sweep-compact. O número de threads pode ser controlado usando a seguinte opção.
$java -XX:ParallelGCThreads=4
Java