ExpertiDict

Java · Intermediário · Português · Técnico

vazamento de memória

/vazaˈmẽtu dʒi meˈmɔɾjɐ/substantivo

Situação em que objetos sem uso continuam alcançáveis por alguma referência esquecida, o coletor não os libera, e a heap cresce até estourar.

Onde usar

Em Java aparece em caches estáticos sem limite, listeners não removidos e ThreadLocal em pools. O sintoma é a heap crescendo após cada GC.

Em código

class Cache {
  static final Map<String, byte[]> M =
      new HashMap<>();
  static void guardar(String k) {
    M.put(k, new byte[1 << 20]); // nunca sai
  }
}

Exemplos

A heap só cresce: deve ter um vazamento de memória no cache.

O listener nunca foi removido e causou um vazamento de memória.

Cuidado

Não é falta de free, pois o GC existe: o vazamento em Java é de referências, e se resolve cortando-as.

Sinônimos

memory leak

Veja também

Todos os termos de Java