Como o codigo roda / Memoria

Memoria sem misterio

Memoria Sem Misterio

Uma forma simples de entender stack, heap, referencia e vazamento sem transformar o assunto em aula de compiladores.

O problema

Memoria costuma ser ensinada de um jeito tao abstrato que parece assunto distante do codigo do dia a dia.

So que varios bugs chatos nascem exatamente dai: referencia errada, objeto ficando vivo tempo demais, estrutura crescendo sem controle.

Quando voce nao tem um modelo minimo, tudo parece “o JavaScript ficou estranho”.

Modelo mental

O modelo util aqui nao precisa ser profundo demais.

Pense assim:

  • valores simples costumam ser baratos de copiar
  • objetos e arrays costumam ser acessados por referencia
  • a memoria so pode ser liberada quando nada mais consegue alcancar aquele valor

Isso ja ajuda bastante a ler bug, comportamento estranho e consumo exagerado.

Quebrando o problema

Quando olhar para memoria, tente responder:

  1. este valor foi copiado ou compartilhado por referencia?
  2. quem ainda aponta para esse objeto?
  3. isso deveria continuar vivo ou ja deveria ter sumido?
  4. existe alguma estrutura acumulando coisa sem limite?

Essas perguntas costumam ser mais uteis do que tentar decorar teoria isolada.

Exemplo simples

Olhe este caso:

const user = { name: 'Ana' }
const sameUser = user

sameUser.name = 'Bia'

console.log(user.name)

O resultado sera:

Bia

Nao porque o objeto foi copiado errado.

Mas porque user e sameUser apontam para o mesmo objeto.

Esse tipo de detalhe explica muita mutacao “misteriosa”.

Erros comuns

  • achar que atribuir objeto cria copia automaticamente
  • esquecer que referencia compartilhada espalha efeito colateral
  • guardar dados em cache, mapa ou lista e nunca limpar
  • falar de garbage collector como se ele resolvesse qualquer acumulacao sozinho

Como um senior pensa

Um senior forte olha para memoria como ownership e alcance.

Normalmente isso soa assim:

O ponto principal nao e so onde o valor foi criado. E quem ainda consegue chegar nele e por quanto tempo ele continua vivo.

Isso muda a forma de investigar bug e de desenhar estrutura.

O que o entrevistador quer ver

Em entrevista, o entrevistador normalmente quer perceber:

  • voce entende diferenca entre copia e referencia
  • voce consegue explicar por que um valor ainda existe
  • voce sabe ligar isso a bug real, nao so a definicao teorica

Quem faz isso bem parece muito mais solido do que quem so repete stack e heap sem contexto.

Memoria fica mais simples quando voce pensa em referencia, alcance e tempo de vida.

Se voce nao sabe quem ainda aponta para o valor, fica dificil entender por que ele nao sumiu.

Proximas leituras