Tecnologia

Java 27 remove o GC que bloqueava aplicações e reduz a memória em 33%

Adrian Kessler
Adicione-nos no Google

O Java 27 chega com duas alterações que vão chegar silenciosamente a todas as JVMs em execução em qualquer lugar. O coletor de lixo G1 é agora o padrão em todos os ambientes de execução Java — acabando com o coletor Serial que parava o mundo em hardware limitado — e os cabeçalhos de objetos foram reduzidos de 96 bits para 64 bits, cortando a sobrecarga em um terço para qualquer aplicação que crie um número significativo de objetos.

O coletor Serial era o GC mais antigo do Java: simples, previsível e brutal. Quando executava, congelava toda a aplicação até que a memória heap fosse limpa. Em servidores com muita memória e múltiplas CPUs, essa troca tornou-se insustentável há anos — o G1 substituiu o Serial como padrão de servidor a partir do Java 9. Ambientes limitados continuaram a usar o Serial até o Java 26: máquinas de CPU única, pequenas VMs na nuvem, sistemas embarcados com pouca memória. Esse padrão termina com o Java 27.

O G1 divide a memória heap em pequenas regiões e coleta-as incrementalmente, priorizando as seções com mais lixo primeiro — daí o nome Garbage-First. As pausas ainda existem, mas são mais curtas e previsíveis do que uma coleta completa do Serial. A Oracle afirma que o G1 agora é competitivo com o Serial em todos os tamanhos de heap. Para desenvolvedores que implementam aplicações nas instâncias de nuvem mais baratas disponíveis — uma CPU, um gigabyte de RAM — o Java 27 remove uma fricção com que vivem há anos.

A alteração dos cabeçalhos compactos de objetos é a outra metade deste lançamento. Os objetos Java carregam metadados — informações de tipo, códigos de hash, estado de bloqueio — armazenados num cabeçalho anexado a cada objeto. O formato antigo usava 96 bits. O Java 27 comprime isso para 64 bits, uma redução de 33% por objeto. Para aplicações que criam milhões de objetos — filas de mensagens, registos financeiros, microsserviços orientados a eventos — o efeito cumulativo é mensurável: heap mais denso, melhor utilização da cache da CPU, menos ciclos de coleção necessários.

Ambas as alterações trazem ressalvas. Aplicações afinadas especificamente para o comportamento do GC Serial podem ver diferenças de temporização inesperadas após a atualização. O G1 usa mais memória para contabilidade do que o Serial, o que importa em ambientes com orçamentos de memória verdadeiramente apertados — embora os testes da Oracle indiquem que a troca de rendimento é insignificante para a maioria das cargas de trabalho. As equipas de desenvolvimento que implementam o Java 27 em sistemas limitados devem testar os novos padrões antes de lançar. A transição é automática, mas não é invisível.

O Java 27 também adiciona troca de chaves híbrida pós-quântica para TLS 1.3, implementando o algoritmo ML-KEM juntamente com a troca de curvas elípticas X25519 existente. As ligações TLS negociadas hoje podem, em teoria, ser capturadas e decifradas mais tarde por um computador quântico futuro. A troca de chaves híbrida defende-se contra isso exigindo que um atacante quebre simultaneamente um algoritmo clássico e um pós-quântico — uma adição significativa para qualquer serviço Java que lide com dados sensíveis.

O Java 27 foi lançado a 15 de setembro de 2026, seguindo o ritmo de seis meses da plataforma. Concorrência estruturada e constantes preguiçosas continuam como funcionalidades de pré-visualização nesta versão. O próximo lançamento de suporte de longo prazo na série Java é esperado em 2027.

Etiquetas: , , , , ,

Adicione-nos no Google

Discussão

Existem 0 comentários.