# Garbage collection: o que é e como funciona em linguagens

> Garbage collection é um mecanismo automático de gerenciamento de memória em linguagens de programação. O garbage collector identifica objetos não referenciados e libera a memória ocupada, prevenindo vazamentos e falhas de segmentação. Esse processo elimina a necessidade de alocação e desalocação manual, aumentando a segurança e a produtividade do desenvolvedor.

*TNT Web · Apps e Software · 22 de julho de 2026 · Dani Travassos*

Garbage collection é a automação do gerenciamento de memória em linguagens de programação. Um garbage collector identifica e libera objetos não utilizados, evitando vazamentos e falhas.

Garbage collection é um mecanismo automático de gerenciamento de memória presente em diversas linguagens de programação. Um garbage collector (coletor de lixo) identifica objetos que não são mais referenciados pelo programa e libera o espaço ocupado por eles, prevenindo vazamentos de memória e falhas de segmentação. Em vez de o programador alocar e desalocar manualmente a memória, o sistema cuida dessa tarefa, reduzindo erros comuns como double free ou memory leak.

## Como funciona o garbage collector?

O garbage collector opera em segundo plano, monitorando as referências a objetos na memória heap. Quando um objeto perde todas as referências ativas (não há mais ponteiros ou variáveis apontando para ele), o coletor o marca como lixo. Em um momento oportuno, ele interrompe a execução do programa (ou executa concorrentemente) para liberar esse espaço. Existem diferentes algoritmos, como mark-and-sweep, copying e generational collection, cada um com trade-offs entre pausa, throughput e uso de CPU.

## Quais linguagens usam garbage collection?

Linguagens como Java, C#, Python, JavaScript, Ruby e Go implementam garbage collection de forma nativa. Em Java, por exemplo, a JVM possui coletores configuráveis (G1, ZGC, Shenandoah). Python usa contagem de referências com um coletor cíclico opcional. Já linguagens como C e C++ exigem gerenciamento manual, embora bibliotecas externas possam oferecer GC.

## O garbage collector é sempre eficiente?

Não. O GC introduz pausas na execução, consome CPU e pode causar latência imprevisível. Em sistemas de tempo real ou de alta performance, o gerenciamento manual (ou com allocators especializados) ainda é preferido. A escolha entre GC e gerenciamento manual depende do domínio: aplicações web toleram bem pausas curtas; jogos ou sistemas embarcados, nem sempre.

## Garbage collection vs. gerenciamento manual de memória

No gerenciamento manual (C, C++), o programador controla malloc/free ou new/delete. Isso dá mais controle sobre desempenho e latência, mas aumenta o risco de erros como vazamentos, uso após liberação e corrupção de heap. Já o GC automatiza a liberação, reduzindo bugs, mas sacrifica previsibilidade. Em projetos modernos, linguagens com GC (Rust usa ownership, não GC) tentam equilibrar segurança e desempenho.

## O garbage collector pode causar vazamentos de memória?

Sim, indiretamente. Se um objeto mantém referências não intencionais (por exemplo, listeners registrados que nunca são removidos, caches esquecidos), o GC não o libera, pois ele ainda é alcançável. Isso é chamado de vazamento lógico de memória. Ferramentas como profilers e heap dump analyzers ajudam a identificar esses casos.

## Como o garbage collector impacta a performance?

O GC consome ciclos de CPU para varrer e liberar objetos, e pode pausar a aplicação (stop-the-world) durante a coleta. Coletores modernos (G1, ZGC) minimizam pausas, mas ainda há custo. A frequência e duração das pausas dependem do tamanho do heap, da taxa de alocação e do algoritmo escolhido. Ajustar flags da JVM ou configurar o coletor pode mitigar impactos em aplicações sensíveis.

## FAQ

### O que é garbage collection?

É um processo automático de gerenciamento de memória que identifica e libera objetos não utilizados por um programa, prevenindo vazamentos e falhas.

### Quais linguagens têm garbage collection?

Java, C#, Python, JavaScript, Ruby, Go e Kotlin, entre outras. Cada uma implementa o GC de forma diferente.

### Garbage collection é a mesma coisa que coletor de lixo?

Sim. "Coletor de lixo" é a tradução direta de garbage collector, o componente responsável pela garbage collection.

### O garbage collector pode causar lentidão?

Sim, especialmente em aplicações com muita alocação de objetos. Pausas do GC podem impactar a latência, mas coletores modernos reduzem esse efeito.

### Como evitar vazamentos de memória com garbage collection?

Elimine referências não intencionais: remova listeners, limpe caches e evite manter objetos em escopos globais desnecessariamente.

### Garbage collection é melhor que gerenciamento manual?

Depende do contexto. Para produtividade e segurança, GC é superior. Para controle fino de desempenho e latência, o gerenciamento manual ainda é necessário.

---

Fonte (canonical): https://tntweb.com.br/apps-e-software/garbage-collection-o-que-e-e-como-funciona-em-linguagens/
