devterview_$ iniciar simulação

Cenário: consumo de memória cresce sem parar

DifícilSêniorCenário

Pergunta

Um serviço Node.js vai consumindo cada vez mais memória ao longo de horas até reiniciar por OOM. Como você investiga um memory leak?

Resposta esperada

Confirmar que é leak e não só cache/carga crescente: o heap sobe monotonicamente mesmo com carga estável e não volta após GC. Tirar heap snapshots em dois momentos distantes e comparar (o 'diff' mostra que tipo de objeto acumulou — retained size). Suspeitos comuns em Node: listeners de evento adicionados e nunca removidos (`emitter.on` num loop), closures que capturam objetos grandes presas em caches/mapas sem TTL nem limite (use `Map` com eviction ou `WeakMap`), timers (`setInterval`) não limpos, e globais que só crescem (um array de log em memória). Correlacionar o crescimento com um endpoint ou job específico ajudando a isolar. Depois de corrigir, validar com um teste de carga longo observando o heap estabilizar.

Por que perguntam isso

Cenário sênior. Termos que indicam experiência: 'heap snapshot diff', 'retained size', 'WeakMap', listeners não removidos.

#memory-leak#heap-snapshot#nodejs
publicidade

Relacionadas