Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
Carregando comentários...