Qualcuno mi farebbe la cortesia di spiegarmi l'effettiva utilità di un Garbage Collector, dato che io non l'ho ancora capita ?
Qualcuno mi farebbe la cortesia di spiegarmi l'effettiva utilità di un Garbage Collector, dato che io non l'ho ancora capita ?
Il Garbage Collector si occupa - al posto dello sviluppatore, s'intende - di distruggere gli oggetti che non sono più utilizzati (di cui non esistono più riferimenti) provvedendo al recupero della memoria da loro occupata.Originariamente inviato da pprllo
Qualcuno mi farebbe la cortesia di spiegarmi l'effettiva utilità di un Garbage Collector, dato che io non l'ho ancora capita ?
In linguaggi come C, C++, Delphi (Win32, non .NET), è il programmatore ad avere la piena responsabilità della distruzione di tutti gli oggetti creati; in Java, C#, VB.NET, Delphi.NET, è il "runtime" (termine generico e in alcuni casi improprio, ma concedimi la licenza di usarlo) a gestire, attraverso il "garbage collector", il rilascio della memoria per gli oggetti non più utilizzati.
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
linguaggio e versione anche nel titolo
io sono festosamente cicciottello :: e. cartman
t'amo senza sapere come, nè quando nè da dove,
t'amo direttamente senza problemi nè orgoglio:
così ti amo perchè non so amare altrimenti
Quindi questa è la sua unica funzione ? Non c'è un modo di "disattivare" il Garbage Collector ?Originariamente inviato da alka
Il Garbage Collector si occupa - al posto dello sviluppatore, s'intende - di distruggere gli oggetti che non sono più utilizzati (di cui non esistono più riferimenti) provvedendo al recupero della memoria da loro occupata.
In linguaggi come C, C++, Delphi (Win32, non .NET), è il programmatore ad avere la piena responsabilità della distruzione di tutti gli oggetti creati; in Java, C#, VB.NET, Delphi.NET, è il "runtime" (termine generico e in alcuni casi improprio, ma concedimi la licenza di usarlo) a gestire, attraverso il "garbage collector", il rilascio della memoria per gli oggetti non più utilizzati.
Ciao!![]()
pero anche noi possiamo invoare la distruzione di un oggetto col metodo Dispose,poi sarà il GC a ripulire il tutto
Il metodo Dispose viene generalmente implementato per inserire al suo interno le istruzioni necessarie a liberare risorse esterne (non gestite) quali handle di file o grafica, connessioni a basi di dati e così via.Originariamente inviato da cassano
pero anche noi possiamo invoare la distruzione di un oggetto col metodo Dispose,poi sarà il GC a ripulire il tutto
La chiamata a Dispose, in ogni caso, non indica al Garbage Collector che è possibile rimuovere l'oggetto dalla memoria, poichè essa è regolata dalla mancanza di riferimenti all'oggetto stesso.
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Sostanzialmente, sì.Originariamente inviato da pprllo
Quindi questa è la sua unica funzione?
No, è parte integrante del CLR (Common Language Runtime)...Originariamente inviato da pprllo
Non c'è un modo di "disattivare" il Garbage Collector ?
...ma perchè vorresti rimuoverlo? (divengo curioso...)
![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Perchè per alcune applicazioni rompe le balle in maniera assoluta ... Per capirci, in alcuni casi (da me sperimentati) sarebbe molto meglio avere il controllo diretto della memoria, piuttosto che il GC, oppure almeno poter lasciare gran parte della gestion della memoria al GC e gestire alcune cose "manualmente". Insomma, in alcuni casi il GC non è proprio il top dell'efficienza, per capirci.
Non ho riscontrato problemi di sorta riguardo il Garbage Collector; parli in modo astratto, non si capisce a cosa ti riferisci.Originariamente inviato da pprllo
Insomma, in alcuni casi il GC non è proprio il top dell'efficienza, per capirci.
Cosa significa "in alcuni casi"? In QUALI casi?
Ho paura che si stia prendendo "fisci per fiaschi" attribuendo erroneamente responsabilità al Garbage Collector che non competono ad esso, che magari sono dovute ad un uso improprio delle classi o alla scelta di soluzioni che richiedono una maggiore quantità di lavoro al GC quando, invece, attraverso un mezzo alternativo si aggiungono ottimi risultati.
Il caso più lampante e frequente è la concatenazione delle stringhe.
Ad ogni modo, fino a quando non si passa ad illustrare un caso specifico (pubblicando i dati tangibili del tuo esperimento), rimango dell'idea che si sta denigrando il GC inutilmente.
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Non so se posso parlare nello specifico del progetto, perchè non è una cosa che riguarda solo me. Comunque, il problema di solito si ha perchè non si può prevedere come e quando interverrà il GC (sto parlando di .NET, non ho mai massicciamente usato Java, quindi non mi esprimo su Java).