Gestione delle risorse
Aggiornamento: novembre 2007
Tutti gli oggetti consumano risorse di sistema quali memoria, handle di file e connessioni a database. Common Language Runtime (CLR) consente di gestire le risorse automaticamente, sollevando l'utente dalla necessità di rilasciare gli oggetti non più utilizzati. La conoscenza dei meccanismi di gestione delle risorse, tuttavia, può aiutare a progettare applicazioni più efficienti.
Garbage Collection
Common Language Runtime utilizza un sistema denominato Garbage Collection per gestire le risorse allocate. Il Garbage Collector di sistema rilascia le risorse di un oggetto quando questo non può più essere raggiunto dal codice in esecuzione dell'applicazione. L'algoritmo di Garbage Collection è non deterministico, pertanto non è possibile stabilire quando le risorse di un oggetto verranno rilasciate dal CLR. Nelle sezioni seguenti vengono descritte alcune modifiche apportate alle modalità di gestione delle risorse in Visual Basic.
Assegnazione di oggetti a Nothing
Nothing è una parola chiave utilizzata da Visual Basic per indicare che una variabile oggetto non contiene un riferimento a un oggetto. Nelle versioni precedenti di Visual Basic era preferibile assegnare gli oggetti non utilizzati a Nothing per separare la variabile oggetto dall'oggetto e rilasciare le risorse. Sebbene sia ancora possibile assegnare gli oggetti non utilizzati a Nothing, con la modalità di gestione delle risorse di Visual Basic questo processo non garantisce il rilascio immediato degli oggetti. In generale è opportuno assegnare a Nothing solo oggetti con durata estesa, come membri condivisi o variabili globali.
Dispose
Alcuni oggetti supportano un metodo denominato Dispose il cui scopo è di rilasciare le risorse di sistema più rapidamente. È necessario che le classi che supportano il metodo Dispose implementino l'interfaccia IDisposable. È necessario che il metodo Dispose sia richiamato in modo esplicito quando si desidera rilasciare le risorse di un oggetto. Di seguito è riportato un esempio:
ThisObject.Dispose()
Finalize
Un altro metodo supportato da alcune classi, denominato Finalize, viene eseguito automaticamente quando viene rilasciato un oggetto e può essere utilizzato per eseguire altre operazioni di pulizia. Il metodo Finalize è simile al metodo Class_Terminate() utilizzato nelle precedenti versioni di Visual Basic. Dopo che un oggetto diventa inaccessibile, CLR chiama il metodo Finalize dell'oggetto. Poiché l'algoritmo di Garbage Collection è non deterministico, è possibile che il metodo Finalize venga chiamato immediatamente o dopo molte ore.
Vedere anche
Concetti
Durata degli oggetti: come creare e distruggere oggetti
Inizializzazione e terminazione di componenti