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:
- este valor foi copiado ou compartilhado por referencia?
- quem ainda aponta para esse objeto?
- isso deveria continuar vivo ou ja deveria ter sumido?
- 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.