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