Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Gc.AddMemoryPressure
martedì 09 giugno 2009 - 07.40
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
GoLDBeRG89
Profilo
| Newbie
2
messaggi | Data Invio:
mar 9 giu 2009 - 07:40
come si usa? che parametro accetta? avete qualche codice di esempio? grazie 1000
aiedail92
Profilo
| Expert
993
messaggi | Data Invio:
mar 9 giu 2009 - 09:36
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
2
messaggi | Data Invio:
mar 9 giu 2009 - 09:43
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
993
messaggi | Data Invio:
mar 9 giu 2009 - 18:00
>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
Torna su
Stanze Forum
Elenco Threads
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 !