Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Scaricare istanze di classe dalla memoria

Questo è un vecchio problema che avevo postato tempo fa...
Ancora non ho capito come funziona il meccanismo di liberazione delle
risorse di VB.
"Ho notato che VB6 gestisce le classi in modo poco coerente:
ho creato 30.000 istanze di una semplice classe; il tempo impiegato per la
popolazione delle stesse (sul mio lentissimo pc) è intorno ai cinque
secondi.
L'incoerenza sta nel momento in cui disalloco le classi stesse: se lo
faccio
esplicitamente (rimuovendo i riferimenti alle singole istanze) impiego
circa
un minuto, se lo lascio fare a VB (in chiusura dell'applicazione) poco
meno.
Mi sembra strano (e poco pratico)."
se qualcuno sa qualcosa di più...
termoPilucco
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Mi sembra strano (e poco pratico)."
Non capisco cosa trovi di strano =)
Se ti riferisci al fatto che il tempo di deallocazione delle
classi quando chiudi l'applicazione  e' minore rispetto alla
singola deallocazione, forse dipende dal fatto che quando chiudi
il programma gran parte della memoria viene liberata "in blocco",
poiche' AFAIK il SO _sa_ quale programma sta impegnando _quale_
zona di memoria, ed un cleanup completo e' evidentemente piu'
rapido che "inseguire" i riferimenti.
Lokar
-- 
Sito Comune: 
http://www.it-lang-vb.net/
Manifesto: 
http://www.it-lang-vb.net/docs/Manifesto.txt
Statuto: 
http://www.it-lang-vb.net/docs/Statuto.txt
UGIdotNET - 
http://www.ugidotnet.org

Non capisco cosa trovi di strano =)
Mormalmente un programma impiega più tempo ad allocare risorse piuttosto che a
liberarle  :)
Portando all'estremo l'esempio reale di cui sopra, potrebbe venire fuori un
programma che parte in un minuto (allocazioni varie), esegue tutto quello che
deve in una manciata di secondi e si chiude in mezz'ora.
A parte il mio programma, non si è mai vista una cosa del genere, per questo
chiedevo :)
Magari domani sera posto uno stralcio di codice così non siete costretti a
spolverare la sfera di cristallo, comunque concettualmente non faccio altro che
creare un albero in cui ogni nodo è un oggetto con tre puntatori ad altri
oggetti dello stesso tipo (padre e due figli).
Quando chiudo l'app,  la maschera principale sparisce, ma in realtà
l'applicazione rimane aperta occupando la CPU al 100% finchè (suppongo) non è
finita la deallocazione.
termoPilucco

 liberarle  :)
Spiegalo a quelli che hanno implementato la listiew che impiega 10 
minuti a fare un clear quando ha un migliaio di items.
Ciao
-- 
Math Parser : 
http://www.neodatatype.net
FlowChart   : 
http://www.neodatatype.net/dump/flowchart/dir.asp
Sito Comune : 
http://www.it-lang-vb.net

 Ciao
Non potrebbe dipendere proprio dal S.O.? Mi sono trovato in una
situazione analoga (LVW con circa 5000 item), e l'unload della Form era
quasi istantaneo con Win2K, e letargico con Win98, a parita di HW. Mi
hanno spiegato poi che Win2K 'segna' la memoria precedentemente allocata
come usabile, mentre Win98 si ostina a pulirla esplicitamente.
Bye by SixaM 8-]
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 minuti a fare un clear quando ha un migliaio di items.
Questo potrebbe avere (tragicamente) senso perchč, magari, la listview
viene aggiornata a video ad ogni eliminazione di un elemento.
Perň ho provato :)
a me da (in visualizzazione dettagli con una sola colonna):
4,44 secondi per aggiungere 100.000 items
0,59 per il clear
Aggiungo che ho utilizzato Win2000
boh :)


 viene aggiornata a video ad ogni eliminazione di un elemento.
se hai molti elementi e non blocchi o non eviti con qualche escamotage il
refresh, nella barra di scorrimento vedi il pulsante che cresce di
dimensioni mentre la lista si svuota.
in questi giorni su una casella sto ricevendo qualcosa come 1000-2000 spam
ogni 24h, e in magic mail monitor lo svuotamento del lv si vede benissimo.
ciao, j.