Sobes.tech
Junior — Middle

Quais etapas de desenvolvimento podem ser distinguidas no ciclo de vida dos objetos na memória gerenciada?

sobes.tech IA

Resposta da IA

O ciclo de vida dos objetos na memória gerida em C# pode ser dividido em várias etapas:

  1. Criação (Allocation) — o objeto é criado no heap gerido usando o operador new.
  2. Utilização (Usage) — o objeto é utilizado no programa, e as referências a ele são armazenadas em variáveis.
  3. Recolha de lixo (Garbage Collection) — quando não há mais referências ao objeto, o recolhedor de lixo marca-o como candidato à remoção.
  4. Libertação de memória (Finalização e Deallocação) — se o objeto tiver um finalizador (Finalize), este é chamado antes de libertar a memória; depois, a memória é libertada.

Um ponto importante — o recolhedor de lixo no .NET funciona por gerações (Gen 0, Gen 1, Gen 2), o que otimiza o desempenho e o tempo de limpeza.

Exemplo:

class MyClass {
    ~MyClass() {
        // Finalizador, chamado antes de remover o objeto
    }
}

var obj = new MyClass(); // Criação
// Utilização do obj
obj = null; // O objeto deixa de estar acessível
// O recolhedor de lixo libertará a memória mais tarde