oggetto del ciclo di vita
un programma Java crea molti oggetti di classi diverse. Oggetto in Java, interagire inviando messaggi a vicenda. Al termine dell'elaborazione, questi oggetti vengono quindi raccolti. Dopo il processo di garbage collection, il sistema operativo rivendica le risorse allocate a questi oggetti che saranno ulteriormente utilizzate dai nuovi oggetti.
Sotto sono le fasi in cui un oggetto Java passa attraverso il suo ciclo di vita:
1. Classe Caricare
Prima di creare oggetto da una classe, la classe dovrebbe essere caricato nella memoria dal disco. Il programma di caricamento classe java carica il file di classe in memoria.
Quando viene caricata la classe?
inizializzatori statici
Java cerca qualsiasi inizializzatori statici e inizializza i campi statici che fanno parte della classe e non fa parte di una specifica istanza della classe (oggetto).
3. creazione oggetto
oggetto è un'istanza della classe. Viene creato nelle seguenti situazioni:
Dichiarazione: quando si dichiara oggetto ad es. Classe A objA; Instantiation: quando new viene utilizzato per allocare un nuovo oggetto nella memoria heap ad es. nuovo ClassA(); Inizializzazione: viene costruito un nuovo oggetto, ad es. Classe A(); 4. Utilizzo dell'oggetto
in questa fase, i programmi possono utilizzare l'oggetto accedendo ai campi o ai metodi di chiamata.
5. Cleanup
Questa è l'ultima fase del oggetti Java dove ottengono riciclati e la memoria è sostenuto dal sistema operativo.
cosa succede in caso di distruzione?
L'oggetto viene rimosso dalla memoria. Java rilascia i suoi riferimenti interni a questo oggetto. Garbage Collection (GC), esegue che libera gli oggetti che non sono più necessari, cioè non ci sono riferimenti a questo oggetto. Finalizzazione: GC offre agli oggetti un'ultima possibilità di ripulire qualsiasi altra risorsa chiamando il suo metodo finalize().
quando succede?
quando l'oggetto esce dall'ambito. Ad esempio {... objA ...}, qui} diventa uno scopo. in questo momento, il runtime Java verifica i riferimenti e consente a GC di riciclare questo oggetto. quando il numero di riferimenti a questo oggetto nella memoria run time di java diventa zero (0). quando l'oggetto è impostato in modo esplicito su null, ad esempio objA = null ;, GC è chiamato finalize() il metodo viene chiamato esplicitamente.
@duffymo: questo non dipende dal fatto che il riferimento dell'oggetto appena creato esista dopo il ritorno della funzione? E.g. un oggetto memorizzato in una raccolta che si trova nell'ambito del chiamante. – Cratylus
@user: in questo caso l'ambito dell'oggetto è stato modificato e potrebbe non essere influenzato da GC. – Jeremy
"Gli oggetti creati nell'ambito del metodo ..." indicano che non è stato inoltrato dall'utente. Hai ragione su una cosa: se l'oggetto creato in ambito viene restituito come valore di ritorno, allora il chiamante può trattenere il riferimento e impedirgli di essere gc'd. Correggerò la mia risposta – duffymo