Gc.AddMemoryPressure

martedì 09 giugno 2009 - 07.40

GoLDBeRG89 Profilo | Newbie

come si usa? che parametro accetta? avete qualche codice di esempio? grazie 1000

aiedail92 Profilo | Expert

Ciao

http://msdn.microsoft.com/it-it/library/system.gc.addmemorypressure.aspx

In sostanza, se allochi molta memoria non gestita, ad esempio con Marshal.Alloc*, puoi avvisare il Garbage Collector di questa allocazione in modo che, quando c'è troppa memoria (fra quella gestita e non gestita), esegue le sue operazioni di recupero. Quando poi rilasci la memoria non gestita (Marshal.Free*), devi avvisare il GarbageCollector con CG.RemoveMemoryPressure

Luca

GoLDBeRG89 Profilo | Newbie

mi spiego meglio.... ho progettato un server per una rete dove si connettono dei client, ogni client è fatto da una classe dove ce nome cognome e robe varie... molti campi anche complessi...
ora cosa succede, quando questi utenti iniziano a diventare 500-600 la ram mi sbatte a 400 mb!!!!!!!! una cosa assurda...
e non riesco a capire perche il gc non si libera delle utenze disconnesse è come se le lasciasse in memoria....
ce un modo per dirgli che quella classe deve eliminarla senza stare a pensare quando farlo?

aiedail92 Profilo | Expert

>ce un modo per dirgli che quella classe deve eliminarla senza
>stare a pensare quando farlo?

Puoi implementare l'interfaccia IDisposable e chiamare il metodo Dispose per forzare l'oggetto a rilasciare le risorse.

Comunque finché non allochi memoria non gestita il metodo AddressMemoryPressure non ti è di alcuna utlità.

Quello che puoi fare è chiamare la funzione GC.Collect() per forzare le operazioni di garbage collecting e recuperare tutta la memoria che si riesce.

Se ancora hai problemi probabilmente devi assicurarti di non avere riferimenti esistenti agli oggetti che non ti servono più, altrimenti non verranno mai rilasciati.

Luca
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5