73 messaggi dal 20 marzo 2002
Ciao, ho realizzato dei servizi Windows in VB.NET e ho dei dubbi sulla loro occupazione RAM quando sono in attesa.
In pratica (su un server 8 processori 8 Gb RAM) quando il servizio starta e quindi dichiaro ed uso solo il Timer ed importo i namespace si prende 8,5Mb di RAM, poi quando il Timer scade e inizia l'elaborazione effettiva si prende 20-30 Mb ma infine quando ha terminato l'elaborazione (circa 10sec) rimane sui 20Mb nonostante io:
1. chiuda e faccia il dispose di tutte le connessioni
2. distrugga (setto a nothing) tutte e ripeto tutte le variabili e oggetti
3. invoco GC.Collect !!!

Consigli?

Ciao e grazie, Andrea K.

Modificato da andrea k il 22 gennaio 2004 10.50 -
48 messaggi dal 01 novembre 2002
1)evita GC.collect meglio non usarla MAI!!
2)controlla che tutti gli oggetti utilizzati durante l'elaborazione inplementino l'interfaccia Idisposble
è comunque normale che si comporti così, quando scateni il timer è probabile che venga caricato in memoria un assembly, da qui il consumo di ram.
quanto al fatto che non lo scarichi, anche qui è normale, perchè il CG/CLR per non frammentare la memoria ne tengono occupata quella che è strettamente necessaria. per capirci, è davvero fisiologico che se hai riferimenti a tanti assembly che usi in una funzione tutti insieme l'occupazione di RAM salga. niente di che proeccuparsi

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.