ScholarGate
Assistente

Coleta de Lixo e Gerenciamento de Memória

O gerenciamento de memória governa como os programas alocam e recuperam memória; a coleta de lixo automatiza a recuperação identificando e liberando objetos que não são mais alcançáveis.

Encontrar tema com PaperMindEm breveFind papers & topics
Tools & resources
Baixar slides
Learn & explore
VídeoEm breve

Definition

Gerenciamento de memória é a alocação e recuperação da memória de um programa; a coleta de lixo é a recuperação automática que libera a memória ocupada por objetos que o programa não pode mais alcançar, poupando o programador da desalocação explícita.

Scope

Este tópico abrange o gerenciamento automático e manual de memória para tempos de execução de linguagens: contagem de referências, marcação e varredura (mark-and-sweep), cópia e coleta geracional; rastreamento de alcançabilidade; e as compensações entre throughput, tempo de pausa e sobrecarga de memória. Aborda coletores concorrentes e incrementais e a relação entre a estratégia de coleta e o design da linguagem.

Core questions

  • Como um coletor determina quais objetos ainda são necessários?
  • Quais são as compensações entre throughput, latência e pegada de memória (memory footprint)?
  • Por que separar objetos por idade (coleta geracional) melhora a eficiência?
  • Como a coleta pode evitar longas pausas em sistemas interativos ou em tempo real?

Key theories

Coleta de lixo por rastreamento (Tracing garbage collection)
McCarthy introduziu a coleta de lixo automática para Lisp, estabelecendo a ideia de recuperar memória rastreando quais objetos permanecem alcançáveis a partir das raízes do programa.
Coleta geracional
Lieberman e Hewitt observaram que a maioria dos objetos morre jovem e propuseram coletar as gerações mais jovens com mais frequência, reduzindo drasticamente o custo da coleta na prática (a hipótese geracional).
Taxonomia das técnicas de coleta
Wilson e o Garbage Collection Handbook organizam o espaço de design de contagem de referências, marcação e varredura (mark-sweep), cópia, coletores incrementais e concorrentes e suas compensações de desempenho.

Clinical relevance

O gerenciamento automático de memória elimina classes inteiras de bugs, como ponteiros pendentes (dangling pointers) e vazamentos de memória (memory leaks), razão pela qual a maioria das linguagens de alto nível depende da coleta de lixo. A escolha do coletor afeta fortemente a latência e o throughput da aplicação, especialmente para sistemas interativos e de servidor.

History

McCarthy introduziu a coleta de lixo com Lisp em 1960. A coleta por cópia (Cheney) e a contagem de referências seguiram, e o coletor geracional de Lieberman e Hewitt de 1983 explorou os tempos de vida dos objetos. As décadas subsequentes produziram coletores incrementais, concorrentes e baseados em regiões, pesquisados de forma abrangente na obra de Wilson de 1992 e no Garbage Collection Handbook de 2011.

Debates

Coleta automática versus gerenciamento manual ou baseado em propriedade (ownership-based management)
Os designers debatem a coleta de lixo, que é segura e conveniente, mas pode impor pausas e sobrecarga, em contraste com o gerenciamento manual ou baseado em propriedade, que oferece desempenho previsível e menor pegada de memória (footprint) ao custo da carga e risco para o programador.

Key figures

  • John McCarthy
  • Henry Lieberman
  • Carl Hewitt
  • Richard Jones
  • Paul Wilson

Related topics

Seminal works

  • mccarthy1960
  • lieberman1983
  • wilson1992
  • jones2011

Frequently asked questions

Como um coletor de lixo sabe quais objetos liberar?
Um coletor de rastreamento começa a partir de raízes conhecidas, como variáveis de pilha e globais, e segue referências para marcar todos os objetos alcançáveis; qualquer coisa não alcançada é inalcançável e pode ser recuperada.
Por que a coleta de lixo geracional é eficaz?
Como a maioria dos objetos se torna inalcançável logo após a alocação, coletar a geração jovem frequentemente recupera a maior parte do lixo de forma barata, enquanto objetos mais antigos e de longa duração são escaneados com muito menos frequência.

Methods for this concept

Related concepts