0Pricing
JavaScript Academy · Aula

Evitando vazamentos — closures, temporizadores e referências

Evite vazamentos de memória limpando temporizadores, limitando closures e descartando referências não utilizadas; use padrões pequenos que iniciantes podem aplicar

Evitando vazamentos — closures, temporizadores e referências é uma aula grátis de JavaScript Academy no CoddyKit. Esta é a aula 2 de 3. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de JavaScript Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de JavaScript Academy inclui 3 aulas no total.

O que é um vazamento

Objetivo: evitar vazamentos simples.

  • Sempre limpe os temporizadores
  • Não mantenha referências não utilizadas
  • Mantenha os fechamentos pequenos
  • Prefira dados de curta duração
Evitando vazamentos — closures, temporizadores e referências — ilustração 1

Limpe os intervalos

Mantenha o identificador do intervalo; chame clearInterval durante a limpeza para que o temporizador e os valores capturados possam ser coletados.

// Start an interval and then clear it to avoid leaks
function startTicker() {
  // store id so we can clear later
  const id = setInterval(function () {
    // work would run every X ms; omitted for demo
  }, 1000);

  // simulate screen close / cleanup
  clearInterval(id);
  console.log("interval cleared");
}

startTicker();
Evitando vazamentos — closures, temporizadores e referências — ilustração 2

Fechamentos menores

Os fechamentos mantêm aquilo que capturam. Capture valores pequenos, em vez de objetos inteiros, quando possível.

// Avoid capturing large objects when only small data is needed
function makeReporter(bigArray) {
  // BAD: store the whole array inside the closure
  const large = bigArray;

  return function reportLength() {
    // Only the length is used
    return large.length;
  };
}

// BETTER: capture only what you need
function makeReporterBetter(bigArray) {
  const count = bigArray.length; // small number
  return function reportLength() {
    return count;
  };
}

const arr = new Array(1000).fill(0);
const bad = makeReporter(arr);
const good = makeReporterBetter(arr);
console.log("bad:", bad(), "good:", good());
Evitando vazamentos — closures, temporizadores e referências — ilustração 3

Limite seus armazenamentos temporários

Vetores e mapas de longa duração podem causar vazamento de memória se crescerem sem limite; reduza ou redefina-os regularmente.

// A growing buffer can leak if never trimmed or reset
const buffer = []; // module-level array

function logItem(x) {
  buffer.push(x); // grows forever if not managed
}

// Simulate usage
logItem("a");
logItem("b");

// FIX: trim or reset when size is over a limit
function trimBuffer(limit) {
  if (buffer.length > limit) {
    buffer.length = limit; // drop old items
  }
}

trimBuffer(1);
console.log("buffer size:", buffer.length);
Evitando vazamentos — closures, temporizadores e referências — ilustração 4

Noções básicas de WeakMap

WeakMap é útil para anexar metadados sem impedir a coleta de lixo do objeto usado como chave.

// WeakMap holds keys weakly: when the object is gone, the entry can be collected
const meta = new WeakMap();

function attachMeta(obj, info) {
  meta.set(obj, info);
}

function readMeta(obj) {
  return meta.get(obj); // undefined if not set or collected
}

let user = { name: "Ayla" };
attachMeta(user, { seen: true });
console.log("meta now:", readMeta(user));

// Later: drop the only strong reference
user = null; // after this, the object and its metadata can be GC'd at some point
console.log("object reference dropped (cannot show GC in console)");
Evitando vazamentos — closures, temporizadores e referências — ilustração 5

Práticas para evitar vazamentos

Lista de verificação:

  • Armazene os identificadores dos temporizadores; use clearInterval/clearTimeout durante a limpeza.
  • Capture apenas os valores necessários nos fechamentos.
  • Reduza/redefina vetores e mapas de longa duração.
  • Prefira dados de curta duração; descarte as referências quando terminar.
Evitando vazamentos — closures, temporizadores e referências — ilustração 6

Questionário sobre limpeza de temporizadores

Verificação rápida: temporizadores e vazamentos.

Evitando vazamentos — closures, temporizadores e referências — ilustração 7

Recapitulação

Recapitulação: limpe os temporizadores, evite capturar objetos enormes nos fechamentos e reduza ou descarte referências de longa duração. Pequenas limpezas evitam vazamentos de memória em aplicativos adequados para iniciantes.

Evitando vazamentos — closures, temporizadores e referências — ilustração 8

Perguntas Frequentes

A aula “Evitando vazamentos — closures, temporizadores e referências” é grátis?

Sim — o texto completo de “Evitando vazamentos — closures, temporizadores e referências” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de JavaScript Academy, atualize para CoddyKit PRO. O curso de JavaScript Academy inclui 3 aulas no total.

O que vou aprender em “Evitando vazamentos — closures, temporizadores e referências”?

Evite vazamentos de memória limpando temporizadores, limitando closures e descartando referências não utilizadas; use padrões pequenos que iniciantes podem aplicar Você pratica JavaScript Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar JavaScript Academy?

Nenhuma experiência prévia é necessária. JavaScript Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 3.

Quanto tempo leva a aula “Evitando vazamentos — closures, temporizadores e referências”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de JavaScript Academy?

Sim. Cada aula de JavaScript Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Fundamentos de Big-O, caminhos quentes e frios (ganhos para iniciantes)
  2. Evitando vazamentos — closures, temporizadores e referências
  3. Introdução à criação de perfis (Node/DevTools) — pequenos hábitos de medição
← Voltar para JavaScript Academy