Dicas.NET - Dispose ou não dispose???

Veja nesta dica, um parênteses sobre performance e escalabilidade quando usamos o método dispose.

 

Dispose ou não dispose

Certamente vocês já devem ter ouvido falar que é sempre muito recomendado que façamos o dispose dos objetos que utilizamos, para garantir a liberação da memória utilizada.

 

Realmente, se não fizermos o dispose não temos como garantir em que momento os recursos serão liberados, o que poderia nos gerar problemas

 

Mas se você tiver o perfil de São Tomé e tiver feito testes com o application center para descobrir se a performance melhora mesmo, ficará assustado ao descobrir que você tem uma perda, não ganho de performance.

 

Mas afinal, por que ?

 

Simples : Performance e escalabilidade são duas coisas distintas que nem sempre andam de mãos dadas. Neste exemplo é claro que o dispose vai gerar uma perda de performance. Afinal, estamos realizando uma tarefa a mais dentro do nosso processo, que é a tarefa de liberação do objeto. Essa tarefa irá consumir tempo e performance.

 

Quando não damos o dispose, o dispose é realizado pelo Garbase Collector. O GC utiliza threads para realizarem a liberação de recursos de uma forma tal que isso a principio não afeta a continuidade do processamento na nossa aplicação.

 

Mas e a escalabilidade ?

 

Se não sabemos quanto tempo os recursos estarão sendo consumidos (quando não damos o dispose), então temos ai um maior uso de memória, desnecessariamente. Consequentemente o volume de usuários que este servidor irá suportar é menor do que seria se estivessemos liberando os objetos.

 

Com isso observamos que com relação ao Dispose temos um típico conflito entre Performance x Escalabilidade : Se fizermos perdemos performance mas economizamos recursos para uma maior escalabilidade, se não fizermos ganhamos performance mas consumiremos um maior volume de recursos.

 

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados