Java · Avançado · Inglês · Técnico
escape analysis
Otimização do JIT que descobre se um objeto nunca escapa do método ou da thread, permitindo alocá-lo sem a heap (scalar replacement) ou eliminar locks.
Onde usar
Aparece em discussões de microbenchmarks: 'o objeto nem chega a ser alocado'. Explica por que um new num laço quente pode sair de graça.
Em código
record Ponto(double x, double y) {}
static double norma(double x, double y) {
var p = new Ponto(x, y); // não escapa
return p.x() * p.x() + p.y() * p.y();
}
// o JIT pode evitar a alocação de pExemplos
Escape analysis removed the allocation, the object never leaves the method.
A escape analysis removeu a alocação, o objeto nunca sai do método.
Don't rely on escape analysis to make new free.
Não conte com a escape analysis para tornar o new gratuito.
Cuidado
Não conte com ela: depende do JIT, do inlining e do tamanho do método; não é garantia da linguagem.
Sinônimos
análise de escape