|
|
|
|
|
Dicas
|
|
Visual Basic.Net (Problemas Comuns)
|
|
|
Título da Dica: Dispose ou não dispose, eis a questão
|
|
|
|
Postada em 30/1/2004 por Ozzys
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.
|
|
|
|
|