Problema con windows service e memoria

giovedì 07 agosto 2008 - 17.09

liscio Profilo | Newbie

salve a tutti,
ho scritto un servizio Windows, in C#.
Il servizio, funziona da "client" pop3 in background.

Ho un timer, che ogni 30 secondi accede ad una serire di caselle pop3, e scorre tutti i messaggi presenti. Alcuni di essi vengono salvati su disco e vengono inserite delle righe su un DB Sql.

Tutto funziona correttamente... l'unico problema è che la dimensione in memoria occupata dal servizio, cresce, e non di poco.
Partendo da una base di 15mb, nel giro di 48 ore, arrivo a 280mb... e dopo due settimane, beh... out of memory.

Ho provato a documentarmi sull'argomento...
Ho provveduto a:
- Chiamare il "GC.Collect()" dopo aver "analizzato" ogni casella POP3.
- Chiamare i metodi "Dispose()" di tutti gli oggetti "disposable" (tutti... almeno spero)
- Eliminare tutti gli oggetti "Statici" (globali)

Qualcuno sa darmi un consiglio?

Grazie.

rossimarko Profilo | Guru

Ciao,

stai usando dei componenti di terze parti? Per caso sono degli oggetti com?

Controlla inoltre se hai usato la parola chiave using per gli oggetti IDisposable (http://msdn.microsoft.com/it-it/library/yh598w02.aspx). Capita a volte che non vengano gestite le eccezzioni e quindi in caso di errore la dispose non viene richiamata. Con la using questo problema non sussiste perchè la dispose viene richiamata appena si esce dal blocco oppure quando viene generato un errore.
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5