Trilha Júnior Trilha

Ruby: coleta de lixo

O curso trata de ferramentas para observar e conduzir o coletor de lixo do Ruby nos seus próprios objetos. O ObjectSpace.each_object conta as instâncias vivas de uma classe, e o ObjectSpace.count_objects divide o heap por tipo interno. O GC::Profiler registra cada pausa do GC com a duração em milissegundos. Duas variáveis de ambiente RUBY_GC_* são testadas no Ruby 4.0.1: uma tem efeito mensurável, e a outra está obsoleta. Também entram os finalizers, com a armadilha de se referir ao objeto sendo finalizado, e o WeakRef, uma referência que o GC não conta.

O que você vai aprender

  • ✓Contar objetos vivos de uma classe com ObjectSpace.each_object
  • ✓Comparar fotos do heap por tipo com ObjectSpace.count_objects
  • ✓Medir pausas do GC com o GC::Profiler
  • ✓Testar variáveis de ambiente do GC na sua versão do Ruby
  • ✓Escrever finalizers que não guardam referência ao self
  • ✓Usar WeakRef para referências que o GC não conta
Prévia grátis · Aula 1 3 min de leitura

Contando objetos vivos com ObjectSpace

A aula "Gerenciamento de memória", de Fundamentos de OS, cobriu o modelo do heap com slots, o mark and sweep, o GC geracional e os campos heap_allocated_pages/heap_live_slots/count do GC.stat. Ela também cobriu find_each e literais de string congelados como padrões de memória no Rails. Nada disso…

Ler a aula completa grátis →

Currículo

7 aulas
Digite para buscar...