terça-feira, 27 de novembro de 2012

O Garbage Collector

Olá a todos!!!

Neste post irei dar uma visão geral a respeito do Garbage Collector a fim de dar uma introdução a próximo tópico em que estarei falando sobre o gerenciamento de memória no IOS 5 e 6. Vamos lá!

A partir da versão 10.5 do Mac OS X (Leopard), introduziu-se o Garbage Collector a fim de facilitar o gerenciamento de memória das aplicações. Esse gerenciador não chegou a ser portado para as plataformas IOS e se tornou depreciado na versão 10.8 (Mountain Lion). Ou seja, não existe motivos para investir no aprendizado do Garbage Collector a não ser que você esteja mirando desenvolver usando o Sistema Operacional Leopard, Snow Leopard ou Lion.

Usando o Garbage Collector, podemos avisar ao compilador os momentos certos para recolhimento do lixo (collectIfNeeded) ou obriga-lo a remover todo o conteúdo que não esta sendo usado (collectExhaustively). 

Outra preocupação da ferramenta envolve intensidade da varredura na memória. Para tal, podemos setar a varredura para focar nas variáveis que foram criadas mais recentemente (generational ou local) ou para varrer a memória toda (full).

O Garbage Collector ainda oferece maneiras de se trabalhar com gerenciamento de memória automático  para a linguagem C e Core Foundation.

Ao invés de usarmos dealloc, passamos a trabalhar com finalize. O mesmo acontece na chamada do método da classe pai dentro da implementação ([super finalize] ao invés de [super dealloc]). Assim como no Java, não é certo o momento em que o compilador irá chamar o finalize, então esse método não é muito utlizado em aplicações que utilizam o Garbage Collector.

Com relação às propriedades e variáveis, deixamos de lado o retain, release e autorelease, e passamos a chamar strong e weak. Estarei explicando no próximo post como funcionam estes novos estados.

Podemos ter ainda classes que não suportam, exijam ou suportam o Garbage Collector. Para definir tal propriedade, marcamos nas propriedades do projeto as classes que queremos que exijam, aceitem ou não suportem tal funcionalidade. Normalmente, o que define se uma Framework ou classe não suporta Garbage Collector é se a mesma implementa ou não o método finalize.

A classe responsável por dar suporte ao GC é a NSGarbageCollector.

Bem, isso é tudo. No próximo post estaremos vendo o método de gerenciamento de memória automático que veio para substituir o Garbage Collector e o gerenciamento de memória manual para aplicativos Apple tanto para IOS como para Mac OS X. 

SEE YOU NEXT MISSION

Nenhum comentário:

Postar um comentário

Obrigado por deixar a sua participação!