Para reduzir o tempo de execução do aplicativo, o cache de código segmentado do Java seria estendido com um heap de código “quente” opcional para acomodar de forma compacta uma parte dos métodos sem perfil, sob um rascunho de proposta de aprimoramento do JDK agora flutuando na comunidade OpenJDK. Outra métrica de sucesso do plano é reduzir a fragmentação de código altamente otimizado no cache de código.
Ao estender o mecanismo de controle do compilador Java para marcar certos métodos como quentes para que possam compilar no heap de código quente, a proposta separaria o código que é conhecido por ser quente, diminuiria a fragmentação do código selecionado e reduziria o impacto negativo da dispersão de calor do código compilado sobre o desempenho de aplicações Java. Ele também forneceria controle dependente do contexto do método para colocar blobs compilados em C2 no heap de código ativo e forneceria uma base para a possibilidade de criar perfil e compactar o código usando a própria máquina virtual.
A proposta de heap de código quente é baseada em propostas mais antigas para um cache de código segmentado e controle do compilador. Ambos são do Java Development Kit 9, lançado em setembro de 2017. O que motiva a nova proposta é a premissa de que o código quente esparso é mais lento. Alguns aplicativos podem perder desempenho devido ao enorme cache de código JVM. Isso acontece sob certas condições, como muito código sendo compilado por JIT, a presença de uma grande quantidade de código ativo e código ativo sendo espalhado por todo o cache de código.
A própria CPU impõe penalidades para a execução de grandes quantidades de código disperso, afirma a proposta. Em sistemas onde este problema é significativo, ele não pode ser resolvido por outros meios, como páginas grandes. O grau de desaceleração depende da quantidade de código ativo, da dispersão desse código e do tipo de processador.
A proposta também enfatiza que nem todo código compilado é chamado com frequência o tempo todo e que a co-localização de código ativo usando informações de perfil pode aumentar o desempenho. Também é possível aprimorar a política de compilação de código quente para melhor desempenho e realizar uma varredura mais agressiva de código mais frio para reduzir o cache de código.
A proposta de heap de código ativo não foi designada para uma versão específica do Java. A versão atual, JDK 22, foi lançada na semana passada, enquanto o JDK 23 está previsto para setembro. O JDK 23 seria um alvo potencial para a proposta de hot code heap, embora o plano possa escapar para um lançamento posterior.