Índice:
Definição - O que significa Finalize?
Finalize é um método de objeto que contém o código necessário para liberar recursos não gerenciados e executar operações de limpeza antes da coleta de lixo (GC).
O método finalize é usado para limpar recursos não gerenciados pelo .NET. Embora a estrutura .NET seja projetada para liberar recursos gerenciados, executando implicitamente tarefas de gerenciamento de memória, os recursos não gerenciados do aplicativo - como identificadores de arquivo e conexões com o banco de dados - devem ser liberados explicitamente.
Techopedia explica Finalize
Embora finalize seja projetado para ser chamado implicitamente pelo GC, o método de descarte pode ser chamado explicitamente pelo código do usuário para liberar recursos.
Finalize é semelhante aos destruidores C ++ tradicionais, pois cada um é responsável por liberar recursos do objeto. Os destruidores C ++ são executados imediatamente quando um objeto sai do escopo, enquanto finalize é chamado durante a limpeza do objeto no GC. Em C #, finalize não pode ser chamado ou substituído diretamente. Se um destruidor for declarado, ele será convertido no método finalize quando o programa for compilado.
Durante a finalização, a alocação de memória ou a chamada de métodos virtuais deve ser evitada. O escopo de finalize deve ser protegido para que seja acessado apenas dentro da mesma classe ou de sua classe derivada. Finalizar não deve fazer referência a nenhum outro objeto. Em C #, a chamada finalize diretamente em um objeto que não seja sua classe base é uma operação inválida. O código de finalização deve ser mínimo, sem chamadas capazes de bloquear o encadeamento de chamada. Como finalize é chamado por um encadeamento dedicado, seu código não deve usar armazenamento local de encadeamento ou qualquer técnica que exija afinidade de encadeamento.
O uso de finalize como um mecanismo de fallback para liberar memória ou recursos não gerenciados é essencial, devido à falta de determinismo e efeitos no desempenho do GC.
