Finalizar

Definição - o que significa Finalizar?

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, recursos de aplicativos não gerenciados - como identificadores de arquivo e conexões de banco de dados - devem ser liberados explicitamente.

Definirtec explica Finalize

Enquanto finalize é projetado para ser chamado implicitamente por GC, o método dispose pode ser explicitamente chamado pelo código do usuário para liberar recursos.

Finalize é semelhante aos destruidores C ++ tradicionais, já que cada um é responsável por liberar recursos de 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 devem ser evitados. O escopo de finalizar deve ser protegido de forma que seja acessado apenas na mesma classe ou em sua classe derivada. Finalize não deve fazer referência a nenhum outro objeto. Em C #, chamar finalize diretamente em um objeto diferente de sua classe base é uma operação inválida. O código de finalização deve ser mínimo, sem nenhuma chamada capaz de bloquear o thread de chamada. Como finalize é chamado por um thread dedicado, seu código não deve usar armazenamento local de thread ou qualquer técnica que exija afinidade de thread.

Usar a finalização 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.

Esta definição foi escrita no contexto do .NET