Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Gerenciamento de Memória e Garbage Collection n...

Gerenciamento de Memória e Garbage Collection no JS

Esta apresentação apresenta as principais diferenças entre linguagens de programação com gerenciamento explícito/manual de memória e aqueles onde ele é feito automaticamente. Apresenta também o conceito de Garbage Collection, ressaltando a necessidade de ainda assim se preocupar com como a memória é utilizada, por exemplo evitando os "vazamentos de memória".

Avatar for Leonardo Zuin

Leonardo Zuin

June 30, 2025
Tweet

More Decks by Leonardo Zuin

Other Decks in Technology

Transcript

  1. Life cycle da memória • As fases de alocação e

    liberação são explícitas em linguagens de baixo nível (como o C) e implícitas nas de alto nível (como o JS).
  2. Gerenciamento baixo nível • No exemplo ao lado, feito em

    C, são usados os métodos malloc e free; • malloc: abreviação para "memory allocation" (alocação de memória), determina que o valor deve ser alocado em memória; • free: método libera o espaço de memória ocupado pela variável; • Essa responsabilidade fica sob o desenvolvedor, o C não realiza gerenciamento automatizado de memória; • Reflexão: imagine suas atividades diárias com JS. Se você precisasse usar métodos como malloc e free para gerenciar suas variáveis, o quão mais complexo seria?
  3. Gerenciamento alto nível • Já neste exemplo, com JavaScript, o

    gerenciamento da memória é feito de forma automatizada; • Ao declarar uma variável e atribuir valor a ela, a memória é alocada de forma automática; • Quando aquela variável não for mais consumida pela aplicação, a memória é liberada automaticamente; • O processo todo é transparente para o desenvolvedor. Mas isso NÃO quer dizer que não seja preciso se preocupar com a memória!
  4. Memory Leaks • Um "vazamento de memória" (memory leak) ocorre

    quando um objeto não é mais usado, mas é referenciado de alguma forma que o GB (Garbage Collector) não consegue removê-lo
  5. Memory Leaks Botão para selecionar andar é pressionado 1. Aloque

    memória para reservar qual andar foi pressionado 2. Insira o número do andar na memória alocada 3. O andar atual é o andar pressionado? o Se sim, não faça nada e finalize o processo <<--- Vazamento de memória!!! 4. Vá ao andar selecionado 5. Libere a memória usada para reservar o andar selecionado No passo 3, deveríamos executar o mesmo que o passo 5
  6. Memory Leaks Há algumas maneiras que um vazamento de memória

    pode ocorrer, vamos falar dos seguintes casos: • Variáveis globais e referências esquecidas • Event listeners • Timers e Intervals mantendo referências
  7. Memory Leaks Timers e Intervals mantendo referências Mesmo que o

    hook não seja mais usado, o browser seguirá alocando memória para o temporizador
  8. Conclusão • Em linguagens de alto nível, como o JS,

    não precisamos nos preocupar com o gerenciamento da memória; • Mas DEVEMOS nos preocupar com o bom uso deste gerenciamento; • Boas práticas pensadas em performance são essenciais para usufruir de mecanismos como o Garbage Collector.