Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

scorpio

Consumo de memoria

Recommended Posts

Tenho um "sisteminha", ele possui várias threads "eternas".

Cada uma destinada a uma função do sistema.

Dentro das threads acesso determinados arquivos do computador(tanto para leitura quanto para escrita), coleto informações dos drivers, manipulo vetores, em alguns casos grava informações em um banco de dados PostgreSQL.

 

O problema que está ocorrendo, é que quanto mais tempo o sistema fica ativo, mais ele consome de memória.

Quando o aplicativo é aberto, em geral, consome em torno de 30mb. Após umas 8~10 horas, chega a consumir 110mb. (isso visto através do gerenciador de tarefas)

Em alguns casos aparace OutOfMemory. :(

 

Sei que todas as operações em todas as threads podem causar isso. Mas como contornar ou pelo menos diminuir esse tipo de situação.

Ao invés de vetores utiliza os Collections/IList?

Pensei um utilizar o Garbage Collection. Mas em quase todos os sites que encontrei falando sobre diz que não é um "boa prática" forçar o coletor a trabalhar, mas não entendi o porque. Então fiquei com um pé atrás.

 

O que eu poderia alterar para no minimo diminuir essas situações?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, dei uma olhada no programa e realamente em alguns lugares os objetos não estavam com Dispose.

 

Coloquei, mas não adiantou. Continuou subindo a memória.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito que encontrei o problema.

 

Parece estar numa parte em que carrego um assembly.

 

Leio, do disco, um EXE (.Net também) para recuperar todos os bytes (ReadAllBytes)

Depois carrego utilizando o Assembly.Load(__bytes)

 

 

Bom, me parece estar por ai. Ainda não pude olhar atentamente para isso. Até por que os testes são lentos... 8, 10 horas...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.