Cuidado ao chamar o GC.Collect

O método Collect do objeto GC (Garbage Collector) força a ocorrência da coleta de lixo e consequentemente liberação de memória.

Porém este método deve ser evitado, pois é preferível deixarmos o próprio Garbage Collector decidir quando deve ser feita a coleta de lixo.

Mas quando realmente precisarmos realizar a coleta de lixo através do GC devemos tomar cuidado com a forma correta de chamar o método Collect, o que não é uma simples chamada de método. Veja :

- Chamamos o método Collect

- Precisamos esperar que todos os finalizes sejam rodados, liberando recursos

- Chamamos novamente o método Collect, pois a execução do finalize gera novas instancias a serem liberadas

 

Veja como fica :

 

GC.Collect

GC.WaitForPendingFinalizers()

GC.Collect