Olá pessoal, neste artigo veremos os conceitos e um exemplo com o Destructor do GC (Garbage Collector) da linguagem C#. Acompanhem:

 Introdução – O GC, ou Garbage Collector (Coletor de Lixo), é um recurso responsável por desalocar quantidades de memória que não se encontram mais acessíveis em um programa.

 Ele é um recurso capaz de oferecer uma solução automatizada ao gerenciamento de memória, elemento de extrema importância em determinados tipos de aplicativos. Geralmente, os programas realizam a leitura dos dados e executam algumas tarefas com eles, gravando-os logo em seguida em um banco de dados.

 Assim que esses dados são gravados, aqueles presentes no conjunto de memória há mais tempo devem ser eliminados ou, ainda, esse conjunto deve ser excluído e posteriormente recriado. Salientando que esse conjunto deve ser recriado antes que o lote subsequente de dados seja processado.

 Podemos criar um código capaz de gerenciar a memória de forma manual, mais essa criação é muito complexa, além de aumentar consideravelmente os esforços para o desenvolvimento de um programa. O GC do C# permite que esse gerenciamento de memória seja feito de forma automatizada.

 Como ele Trabalha – O GC é responsável por rodar seu próprio thread e sua execução é realizada de tempos em tempos, determinada pelo .NET Framework. Durante o processo de execução do GC, os outros threads que estiverem sendo executados na aplicação ficarão parados temporariamente. Isso porque o GC pode precisar mover objetos e atualizar referências de objetos. Vale salientar que o GC não pode realizar estas tarefas enquanto os objetos estiverem sendo usados.

 Destructors e Exemplo – Um Destructor é responsável por indicar que um objeto poderá passar para o GC. Com relação à sintaxe para escrever um destructor, ela é formada por um til (~) acompanhado do nome da classe. O GC é responsável por determinar quando o destructor é chamado. Além disso, o GC busca os objetos que não estão sendo mais usados pela aplicação.

 Veja no exemplo abaixo, o uso de um destructor e seu resultado em um Console App:

class Destructor

    {

        ~Destructor()

        {

            Console.WriteLine("Executando o Destructor");

        }

    }

 

    class Program : Destructor

    {

        static void Main(string[] args)

        {

            Program objProgram = new Program();

            objProgram.ToString();

        }

    }


 Se atente para as seguintes regras quanto ao uso do destructor:

·         Não podemos declarar um destructor em um struct. Neste caso, o GC não se aplica, pois um struct é um tipo por valor que está localizado na memória e não na heap (pilha). Structs não usam o GC.

·         Não podemos declarar um modificador de acesso para um destructor. Isso acontece porque, em hipótese alguma chamamos o destructor por conta própria. Como dito anteriormente, é sempre o GC que chama o destructor.

·         Não podemos declarar um destructor com parâmetros, além disso, o destructor não pode assumir quaisquer parâmetros, pelos motivos citados anteriormente.

 Fonte de Consulta: Apostila de C#, da Impacta Tecnologia.

 Assim finalizo o artigo. Na próxima parte veremos o método Dispose, a classe GC e começaremos a ver sobre as Propriedades, não percam!

 Um abraço, e até o próximo artigo.

 Wellington Balbo de Camargo

 wellingtonbalbo@gmail.com