Newsgroup: it.comp.lang.visual-basic
Titolo: [?] [.NET] Garbage collector

Sarò sincero... NON ho capito niente!!!!! :(((
Con VB6 & COM si usava il metodo del reference counter...
...e questo dava 1000 problemi di memory leaking (si scrive così giusto?)...
Soprattutto se creavo riferimenti incrociati tra gli oggetti.
Ora .NET dovrebbe avere risolto questo problema... COME?
Non credo di avere capito bene...
Quando un oggetto smette di essere puntato rimane in attesa che passo lo
spazzino (garbage collector)... Lo spazzino... in base a cosa capisce che
due oggetti che si puntano tra di loro non sono più puntati da nessun altro
e quindi sono da deallocare?
                        Ciao & Grazie
                                                    Allanon
--
- SPAMKILLER
 L'indirizzo delle risposte é 
itlangv...@michele.sytes.net
 LASCIATE il NOSPAM fa parte dell'indirizzo :-)
  Per superare le impostazioni di protezione antispam scrivete
  nel testo del messaggio la scritta "SPAMKILLER"
Scusate il disturbo, ma non posso più di pubblicità!

purtroppo sono fuori ufficio e non posso dirti niente di specifico, perň c'č
un bel paragrafone sul libro di Balena proprio su questo argomento
specifico......
non č una cosa semplice........mi ricordo, cosě a grandi linee, una sorta di
flag che poteva valere 0, 1 o 2.......
in base a quel valore, il garbage collector gestiva il tutto.....
scusate la confusione, ma veramente ho ricordi vaghissimi!!! anche perchč
ricordo di aver letto quella sezione quando ero in vacanza a Cannes.....
:-)))
good coding!!!
--
Igor Damiani
ig...@igordamiani.it
http://www.igordamiani.it
ICQ : 11847262

 specifico......
Beh... per ora andrò in fiducia che i miei oggetti sopravvivano solo il
dovuto... :)
Poi leggero sul libro del buon Balena... (purtroppo sono ancora MOLTO
indietro...)
            Ciao


Apri IE e inserisci il seguente indirizzo:
ms-help://MS.VSCC/MS.MSDNVS.1040/Vbcon/html/vbconinitializationterminationof
components.htm
dovresti visualizzare la pagina "Inizializzazione e terminazione di
componenti"
Il metodo Dispose rilascia le risorse e avverte il Garbage Collection che lo
può eliminare definitivamente.
giuseppeD

Cercherň di essere breve...
Quando crei un istanza di un oggetto, questo viene messo in un area di
memoria detta managed heap, eventuali altri ogetti vengono messi di seguito
all'interno di questo blocco contiguo di memoria.
Il garbage collector tiene traccia della posizione dell'ultimo oggetto
memorizzato attraverso un proprio puntatore cosě da sapere immediatamente
dove posizionare il successivo.
Quando il puntatore va a finire oltre l'area riservata alla managed heap,
inizia il processo di pulizia detto Garbage Collecting.
Innanzitutto il GC assume che tutti gli oggetti nella heap siano
'spazzatura', dopodichč inizia a vedere quali sono i Roots object presenti
nella heap, i roots object sono sono gli oggetti puntati dalle variabili
globali, statiche, attualmente attivi nella sezione di codice che sta
girando e quelle attualmente puntate dai registri della CPU.
Ogni oggetto Root viene analizzato per eventuali dipendenze cosicchč alla
fine hai un insieme di oggetti 'validi' e altri marchiati come spazzatura.
I blocchi 'attivi' vengono promossi in un altro blocco detto generazione 1
(esiste anche un generazione 2) e il puntatore resettato.
Questo in breve, ci sono altri dettagli legati al fatto che l'oggetto
implementi il metodo finalize (vedi qualche post sotto) ma il post
rischierebbe di diventare chilometrico...
HTH
--
Corrado Cavalli [Microsoft MVP]
UGIdotNET - 
http://www.ugidotnet.org

 ricordo di aver letto quella sezione quando ero in vacanza a Cannes.....
...gioventů bruciata... Scusa, ma tu in vacanza a Cannes, ti metti
a leggere un libro sulla programmazione ?
Almeno dě che hai una buona scusa: pioveva a dirotto da tre giorni,
per caso ? :-P
Un Paperino "ai miei tempi queste cose..."