Java 10: Interface do Coletor de Lixo e Full GC Paralelo para G1
JEP 304 - Interface do Coletor de Lixo (Garbage Collector Interface)
Antes do Java 10, componentes da 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 do Garbage Collector é introduzida para que implementações alternativas de GC possam ser conectadas (plugged in). Também ajuda a isolar a base de código de diferentes implementações de coleta de lixo.
JEP 307 - Full GC Paralelo para G1
O Java 9 introduziu o coletor G1 (Garbage First). O G1 evita coleta completa (full GC), mas se threads concorrentes solicitam coleta e a memória não é recuperada rápido o suficiente, a experiência do usuário é impactada. No Java 10, o G1 agora usa um Full GC de fallback.
Com essa mudança, o G1 melhora sua latência no pior caso usando Full GC em paralelo. Atualmente, o G1 usa algoritmo mark-sweep-compact single-threaded. Com JEP 307, threads paralelas iniciam o algoritmo mark-sweep-compact. O número de threads pode ser controlado com:
$ java -XX:ParallelGCThreads=4
Essas melhorias tornam o G1 mais robusto e previsível sob carga.
Java
- Dominando Operadores Java: Tipos, Sintaxe e Exemplos Práticos
- Comentários em Java: Tipos, Uso e Boas Práticas
- Dominando o Loop for Aprimorado em Java: Sintaxe, Exemplos e Boas Práticas
- Dominando Strings em Java: Criação, Métodos e Boas Práticas
- Dominando Interfaces em Java: Conceitos, Implementação e Boas Práticas
- Dominando Classes Internas Anônimas em Java: Definição, Sintaxe e Exemplos Práticos
- Dominando Try-With-Resources em Java: Gerenciamento Automático de Recursos Explicado
- Anotações em Java Explicadas: Tipos, Posicionamento e Exemplos Práticos
- Asserções em Java: Guia Prático para Detectar Bugs e Garantir Confiabilidade do Código
- Dominando Java Collections: Guia Completo para Estruturas de Dados Eficientes