  |
Java rileva automaticamente gli oggetti inutilizzati. |
  |
Ogni oggetto non usato da nessuno viene riciclato
automaticamente (garbage collection). |
Abbiamo visto come creare un nuovo oggetto. In Java, a differenza di
altri linguaggi, non è necessario distruggere gli oggetti. Questo grazie a un meccanismo che si chiama "garbage collection" (raccolta di spazzatura). Per cui l'uso di un oggetto software è simile a quello di un oggetto reale. Si prende l'oggetto, si usa e quando hanno sempre più si poggia sulla scrivania. Ogni tanto passa la donna delle pulizie a raccogliere lattine e cicche di sigaretta.
  |
La garbage collection non ricicla le altre risorse del sistema |
  |
per esempio file, windows, threads... |
Bisogna stare attenti che la raccolta di spazzatura lavora solamente su memoria. In un sistema operativo che sono altre risorse oltre la memoria che possono essere impegnate da una istanza. L'esempio più semplice è quello del file: aprire un file comporta impegnare un "descrittore di file", risorsa interna del sistema operativo. Di queste risorse ce ne è un numero limitato: per questo motivo una volta che non si usa più il file, bisogna rilasciarlo esplicitamente: in particolare, occorre chiuderlo.
  |
è possibile aggiungere un metodo finalize() ad ogni
classe. |
  |
viene invocato una volta sola prima della garbage collection. |
a volte può succedere che non si sa bene quanto bisogna rilasciare le risorse occupate da un oggetto. In generale il momento di liberarle può coincidere con il momento di distruggere l'oggetto, ovvero con la raccolta di spazzatura.
La raccolta di spazzatura però non gestisce altre cose oltre la liberazione della memoria. Si può tuttavia specificare delle opere azioni da eseguire quando viene effettuata la raccolta di spazzatura. Ovvero si può inserire un metodo finalize che verrà chiamato dal sistema immediatamente prima di effettuare la raccolta di spazzatura. Tipicamente si aggancia a questo metodo la liberazione di risorse del sistema. Nell'esempio che abbiamo fatto del file, la chiusura dello stesso può avvenire in questo metodo.
|