Diferença entre dispose () e finalize ()

Diferença de chave - descartar () vs finalizar ()
 

o diferença chave entre dispose () e finalize () é que dispose () deve ser explicitamente chamado pelo programador, enquanto o finalize () é chamado pelo coletor de lixo antes de destruir o objeto.

O dispose () é um método para fechar ou liberar recursos não gerenciados, como arquivos, fluxos mantidos por um objeto. O finalize é um método para executar operações de limpeza em recursos não gerenciados mantidos pelo objeto atual antes que o objeto seja destruído.

CONTEÚDO

1. Visão geral e principais diferenças
2. O que é dispor ()
3. O que é finalize ()
4. Semelhanças entre dispose () e finalize ()
5. Comparação lado a lado - dispor () vs finalizar () em forma de tabela
6. Resumo

O que é dispor ()?

Uma das vantagens mais importantes do .NET framework é que ele fornece coleta automática de lixo. Ele libera automaticamente a memória dos objetos que não são usados. Em linguagens de programação como C e C ++, o programador precisa lidar sozinho com o gerenciamento de memória. Mas em idiomas como o C #, que é criado no .NET framework, fornece o coletor de lixo. Ajuda a gerenciar a memória. Ele não pode ser usado para liberar os recursos de memória não gerenciada. O método dispose () pode ser usado para realizar esta tarefa.

O método dispose () pode ser usado para liberar recursos, como conexões com bancos de dados, manipuladores de arquivos etc. Este método não é chamado automaticamente. Portanto, o programador deve implementar esse método. Assim que esse método é chamado, a memória para o recurso não gerenciado específico é liberada. Este método é declarado na interface IDisposeable.

O que é finalize ()?

O método finalize é chamado apenas pelo coletor de lixo quando a referência a um objeto não é mais usada. Este método é chamado pouco antes de destruir o objeto. Este método é implementado com a ajuda do destruidor. O método finalize é definido na classe java.lang.object. Este método é declarado como protegido. Não é declarado como público para evitar o acesso pelas outras classes. No geral, o método finalize pode minimizar o desempenho do programa porque não libera a memória instantaneamente.

Qual é a semelhança entre dispose () e finalize ()?

  • Dispose () e finalize () podem ser usados ​​para liberar a memória alocada para um recurso não gerenciado.

Qual é a diferença entre dispose () e finalize ()?

dispose () vs finalize ()

O dispose () é um método para fechar ou liberar recursos não gerenciados, como arquivos, fluxos mantidos por um objeto. O finalize é um método para executar operações de limpeza em recursos não gerenciados mantidos pelo objeto atual antes que o objeto seja destruído.
 Objetivo
O método de descarte é usado para liberar os recursos não gerenciados quando é chamado. O método finalize é usado para liberar os recursos não gerenciados antes que o objeto seja destruído.
Interface ou classe definida
O dispose () é definido na interface IDisposable interface. O finalize () é definido na classe java.lang.object.
 Invocando método
O método de descarte é invocado pelo programador. O método finalize é chamado pelo coletor de lixo.
Especificador de acesso
O método de descarte é público. O método finalize está protegido.
Rapidez
O método de descarte é chamado instantaneamente. O método finalize é chamado lentamente.
atuação
O descarte não minimizará o desempenho do programa. O método finalize pode minimizar o desempenho do programa.

Resumo - descartar () vs finalizar ()

Este artigo discutiu a diferença entre os métodos de descarte e finalização em C #. A diferença entre dispose () e finalize () é que, dispose () deve ser explicitamente chamado pelo programador, enquanto o finalize () é invocado pelo coletor de lixo antes de destruir o objeto.

Referência:

1.Implementar Finalize e descarte para limpar recursos não gerenciados. Disponivel aqui  
2.Sharma, Nitya. "De volta ao básico - descarte versus finalize". C # Canto. Disponivel aqui  

Cortesia da imagem:

1.'Csharp Logo'Por Andres15alvarez - Trabalho próprio, (CC BY-SA 4.0) via Commons Wikimedia