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
Gestione memoria
lunedì 25 luglio 2005 - 18.32
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Lomba
Profilo
| Newbie
11
messaggi | Data Invio:
lun 25 lug 2005 - 18:32
Salve a tutti,
Vorrei sapere se esiste un modo per liberare la memoria del PC durante un'applicazione scritta in VB.net, mi spiego meglio:
sto scrivendo un'applicazione nella quale uso in modo massiccio Array ed ArrayList, alcuni di questi però non mi servono per tutta l'applicazione e vorrei poterli eliminare dalla memoria in modo da ridurne l'occupazione.
Ho provato con Arraylist.clear e Arrray=Nothing ma, guardando l'occupazione della memoria dal Task Manager di Windows, queste istruzioni non sembrano dare il risultato voluto.
Ringrazio tutti per l'attenzione
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
mar 26 lug 2005 - 00:21
E' sempre in garbage collector che distrugge gli oggetti.
Puoi provare a chiamare direttamente GC
Inoltre verifica che tutti gli oggetti quando esci dalla sub siano stati distrutti.
Questo soprattutto se utilizzi oggetti com.
Lomba
Profilo
| Newbie
11
messaggi | Data Invio:
mar 26 lug 2005 - 10:00
sono alle prime armi con vb.net e, onestamente, non mi è molto chiaro il funzionamento del GC. Come faccio a verificarne lo stato e, sopratutto, come posso cancellarlo per liberare della memoria?
mille grazie
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
mar 26 lug 2005 - 10:08
Veramente il GC non si può cancellare.
E' un processo autonomo che distrugge gli oggetti che non sono più referenziati.
Si può solo invocare (GC) ma non cancellare.
Il vero rimedio per i problemi di persistenza in memoria di oggetti è che bisogna fare in modo, nella maggior parte dei casi, che in modo "naturale" i reference counters si azzerino.
Questo succede se all'interno dei nostri programmi chiudiamo, mettiamo a nothing, utilizziamo correttamente il dispose.
Anche l'utilizzo di un oggetto ha la sua area di scope, se ad esempio si dichiara un oggetto a livello di modulo o a livello di form, il garbage collector non potrà distruggere quasi mai l'oggetto perchè il modulo è visibile a tutta l'applicazione, la form non è distrutta fino a che non è chiusa e "disposed".
Lomba
Profilo
| Newbie
11
messaggi | Data Invio:
mar 26 lug 2005 - 12:24
ho provato ad impostare " = Nothing" tutti i dati di cui non ho più bisogno (parlo di Array e ArrayList veramente grossi), guardando però il TaskManager di Windows alla voce "Utilizzo mem." del processo corrispondente alla mia applicazione non ho però ottenuto benefici. Inoltre per gli ArrayList ho provato la funzione ".clear" ottenendo i medesimi risultati.
Grazie
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
mar 26 lug 2005 - 13:24
Prova a isolare da soli in una classe apposita gli oggetti che vorresti annullare.
Prova a minimizzare l'applicazione e poi a ripristinarla.
Lomba
Profilo
| Newbie
11
messaggi | Data Invio:
mar 26 lug 2005 - 18:30
penso di essere riuscito a svuotare la memoria.
Array = Notthing
GC.Collect ( ).
Grazie per i consigli
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 !