Qantità di memoria allocata dagli oggetti

martedì 06 marzo 2012 - 15.44
Tag Elenco Tags  C#  |  .NET 3.5  |  .NET 4.0  |  Windows 7  |  Visual Studio 2010

andrestu Profilo | Expert

Nello specifico la domanda è riferita all'utilizzo dell'oggetto Session e Application.
Nel sito web che sto sviluppando faccio un uso massiccio delle dictionary Session e Application come cache per memorizzare oggetti di diverso tipo.
Ora quello che mi chiedo è che cosa succede se occupo totalmente la memoria disponibile? Come si comporta l'ambiente .net (in questo caso specifico Aspnet)?
Mi genera un eccezione oppure elimina automaticamente oggetti in memoria (anche se ancora utilizzati) per allocare nuovo spazio?

Andrea Restucci - Web Developer

alx_81 Profilo | Guru

>Ora quello che mi chiedo è che cosa succede se occupo totalmente
>la memoria disponibile? Come si comporta l'ambiente .net (in
>questo caso specifico Aspnet)?
se utilizzi gli opportuni pattern (vedi la using) e fai le dispose correttamente in teoria il garbage collector pulisce gli oggetti obsoleti liberando memoria.
Certo è che se non gestisci bene le eccezioni e riempi i pool, ti prendi un bel Server too busy.
Se gestisci invece in maniera ottimale tutto e ottieni comunque lo stesso errore potresti essere fortunato , hai un sacco di connessioni (e quindi tanti utenti potenzialmente).
Dico "potresti" perchè potrebbe pure essere un attacco

approfondisci qui:
http://msdn.microsoft.com/en-us/library/ee787088.aspx
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

andrestu Profilo | Expert

ok grazie, anche se per esempio nel mio caso utilizzando aspnet salvo grandi collection in Session, in questo caso anche se identifico il punto in cui una certa collection non viene più utilizzata cè poco da fare, devo solo aspettare che il Garbage rilevi che non è più utilizzata e faccia pulizia.
Lo using se non sbaglio serve a richiamare in automatico il metodo dispose quando l'oggetto non è più utilizzato e se questa affermazione è giusta a questo punto mi chiedo se ha senso utilizzare lo using su oggetti privi di metodo dispose, giusto? oppure ho detto una baggianata?

Andrea Restucci - Web Developer

alx_81 Profilo | Guru

>Lo using se non sbaglio serve a richiamare in automatico il metodo
>dispose quando l'oggetto non è più utilizzato e se questa affermazione
>è giusta a questo punto mi chiedo se ha senso utilizzare lo using
>su oggetti privi di metodo dispose, giusto? oppure ho detto una
>baggianata?
no, non puoi, se provi ad usarlo, ti prendi un bel "non implementa la IDisposable"
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5