Cos'è la Garbage Collection in Java?

Sommario:

Anonim

Cos'è la Garbage Collection in Java?

Garbage Collection in Java è un processo mediante il quale i programmi eseguono automaticamente la gestione della memoria. Il Garbage Collector (GC) trova gli oggetti inutilizzati e li elimina per recuperare la memoria. In Java, l'allocazione dinamica della memoria degli oggetti viene ottenuta utilizzando il nuovo operatore che utilizza una parte della memoria e la memoria rimane allocata finché non ci sono riferimenti per l'uso dell'oggetto.

Quando non ci sono riferimenti a un oggetto, si presume che non sia più necessario e la memoria, occupata dall'oggetto, può essere recuperata. Non vi è alcuna necessità esplicita di distruggere un oggetto poiché Java gestisce automaticamente la disallocazione.

La tecnica che esegue questa operazione è nota come Garbage Collection . I programmi che non disallocano la memoria possono alla fine bloccarsi quando non c'è più memoria da allocare nel sistema. Si dice che questi programmi abbiano perdite di memoria.

La raccolta dei rifiuti in Java avviene automaticamente durante la durata del programma, eliminando la necessità di de-allocare la memoria e quindi evitando perdite di memoria.

In linguaggio C, è responsabilità del programmatore de-allocare la memoria allocata dinamicamente utilizzando la funzione free (). È qui che conduce la gestione della memoria Java.

Nota: tutti gli oggetti vengono creati nella sezione heap della memoria. Maggiori informazioni su questo in un tutorial successivo.

Esempio: per apprendere il meccanismo di Garbage Collector in Java

Passaggio 1) Copia il codice seguente in un editor.

classe Studente {int a;int b;public void setData (int c, int d) {a = c;b = d;}public void showData () {System.out.println ("Valore di a =" + a);System.out.println ("Valore di b =" + b);}public static void main (String args []) {Studente s1 = nuovo Studente ();Studente s2 = nuovo Studente ();s1.setData (1,2);s2.setData (3,4);s1.showData ();s2.showData ();// Student s3;// s3 = s2;//s3.showData ();// s2 = null;//s3.showData ();// s3 = null;//s3.showData ();}}

Passaggio 2) Salva, compila ed esegui il codice. Come mostrato nel diagramma, vengono creati due oggetti e due variabili di riferimento.

Passaggio 3) Rimuovere il commento dalla riga # 20,21,22. Salva, compila ed esegui il codice.
Passaggio 4) Come mostrato nel diagramma seguente, due variabili di riferimento puntano allo stesso oggetto.

Passaggio 5) Rimuovere il commento dalle righe 23 e 24. Compilare, salvare ed eseguire il codice
Passaggio 6) Come mostrato nel diagramma seguente, s2 diventa nullo, ma s3 punta ancora all'oggetto e non è idoneo per la raccolta dei rifiuti java.

Passaggio 7) Rimuovere il commento dalle righe 25 e 26. Salvare, compilare ed eseguire il codice
Passaggio 8) A questo punto non ci sono riferimenti che puntano all'oggetto e diventa idoneo per la garbage collection. Verrà rimosso dalla memoria e non è possibile recuperarlo.

Come eliminare un oggetto in Java?

1) Se vuoi rendere il tuo oggetto idoneo per Garbage Collection, assegna la sua variabile di riferimento a null.
2) I tipi primitivi non sono oggetti. Non possono essere assegnati nulli.