segunda-feira, 5 de novembro de 2007

Introduzindo o Coletor de lixo - Gerenciamento de Memória em Delphi

Como já explicamos anteriormente, a partir de 2002 (delphi 7), além de manter sua compatibilidade com as versões anteriores, agora permite que o desenvolvedor disponibilize seus aplicativos para serem executados sobre a arquitetura .NET.

Na arquitetura .NET o CLR (Commom Language Runtime), ou tempo de execução compartilhado, é o ambiente de execução de aplicações. Logo o gerenciamento de memória é efetuado pelo runtime, permitindo que o desenvolvedor se concentre na resolução do seu problema específico. O que diz respeito ao sistema operacional, como o gerenciamento da memória, é feito pelo runtime.

Como isso é efetuado? À medida que uma área de memória é necessária para alocar um objeto, o GC ou coletor de lixo (Garbage Collector) realizará essa tarefa, assim como a liberação de espaços de memória que não estiverem mais em uso.

Para os que trabalham com linguagens de programação como C ou C++, que permitem o acesso direto à memória Heap via ponteiros, essa é uma das maiores dores de cabeça que os programadores sofrem, ora por fazer referência a espaços de memória que não foram alocados, ora porque estes espaços já foram liberados anteriormente; é exatamente esse tipo de erro que o coletor de lixo nos ajuda a evitar.

O gerenciamento de memória, quando efetuado diretamente pelo programador, torna os programas mais eficientes em termos de desempenho, mas ao mesmo tempo o penaliza, obrigando-o a alocar e desalocar memória quando assim é requerido. Como a .NET suporta diversas linguagens, como o C++, ela permite que o programador faça esse gerenciamento também, o que é chamado de “unsafe code” (código inseguro); entretanto, por default, O GC é o encarregado dessa tarefa, e o contrário não recomendado.

Nenhum comentário: