Java · Intermediário · Inglês · Técnico
OutOfMemoryError
Erro lançado quando a JVM não consegue alocar memória, mesmo após coletar, como heap esgotada, falta de metaspace ou de threads nativas.
Onde usar
Aparece em produção como 'Java heap space'. Primeiro passo: gerar um heap dump com -XX:+HeapDumpOnOutOfMemoryError e ver quem retém os objetos.
Em código
# arquivo jvm.options
-Xmx512m
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/tmp/dumps
# uso: java @jvm.options -jar app.jarExemplos
The service died with an OutOfMemoryError at three a.m.
O serviço morreu com um OutOfMemoryError às três da manhã.
Enable the heap dump on OutOfMemoryError before the next deploy.
Habilite o heap dump no OutOfMemoryError antes do próximo deploy.
Cuidado
Aumentar o -Xmx sem investigar só adia o problema se houver vazamento; mensagens como Metaspace ou 'unable to create native thread' indicam outra causa.
Sinônimos
OOM