ExpertiDict

Java · Avançado · Português · Técnico

desotimização

/dezotʃimizaˈsɐ̃w/substantivo

Processo em que a JVM descarta o código compilado de um método e volta ao interpretador quando uma suposição otimista do JIT deixa de valer.

Onde usar

Aparece em logs do PrintCompilation como 'made not entrant' e em quedas de desempenho depois de uma chamada que quebrou a especulação, como um tipo novo num ponto monomórfico.

Em código

// o JIT assume que l é sempre ArrayList
void usar(List<String> l) { l.size(); }
usar(new ArrayList<>());   // otimiza
usar(new LinkedList<>());  // pode desotimizar
// veja: -XX:+PrintCompilation

Exemplos

O método foi desotimizado quando apareceu um novo tipo.

Vi 'made not entrant' no log, é uma desotimização.

Cuidado

É normal e seguro, não indica bug. Muitas desotimizações em sequência indicam código instável, e aí vale investigar.

Sinônimos

deoptimization

Veja também

Todos os termos de Java