Garbage Collection in Java: tutto ciò che devi sapere



Questo articolo sulla Garbage Collection in Java ti dà un'idea chiara di come funziona, i suoi tipi e diversi metodi sotto Garbage Collection in Java

è un linguaggio di programmazione generico e se nel caso in cui ti venga in mente una situazione in cui ci sono dati inutilizzati nel tuo programma e non sai come gestirli, Garbage Collection in Java è utile. Quindi, sto scrivendo questo articolo per aiutarti a gestire queste funzioni.

Tratterò gli argomenti nel seguente ordine:





Iniziamo!

tabella all'interno di una tabella html

Cos'è la Garbage Collection in Java?

In Java, i programmatori affrontano il problema di dover distruggere il file oggetti che sono fuori uso. Ma con Garbage Collector, questo può essere facilmente risolto. L'obiettivo principale di questo Garbage Collector è liberare memoria nell'heap distruggendo gli oggetti che non contengono riferimenti. La tecnica è nota come Raccolta dei rifiuti.



È anche considerato un programma che aiuta a eseguire la gestione automatica della memoria. quando vengono eseguiti sulla JVM, gli oggetti vengono creati sull'heap, che in realtà è una porzione di memoria dedicata al programma. Alla fine, alcuni oggetti non saranno più necessari. Il netturbino trova questi oggetti inutilizzati e li elimina per liberare memoria.

  • I programmi che non disallocano la memoria possono eventualmente interrompersi quando nel sistema non è rimasta memoria da allocare. Si dice che tutti questi programmi abbiano perdite di memoria.
  • La garbage collection in Java avviene automaticamente durante la vita di un programma, eliminando la necessità di de-allocare la memoria e quindi evitando perdite di memoria.
  • Metodi come gratuito() in C e Elimina() in C ++ vengono utilizzati ma, in Java, viene eseguito automaticamente. Così, fornisce una migliore gestione della memoria.

Ora, vediamo come funziona questa garbage collection automatica in Java.

Nota : Si dice che un oggetto sia idoneo per la garbage collection se e solo se non è raggiungibile.



Come funziona la raccolta dei rifiuti?

Garbage Collection è un processo di lavoro con la memoria Heap e anche marchio oppure identificare gli oggetti irraggiungibili e distruggerli con la compattazione.

La garbage collection in Java è un processo automatico e il programmatore non deve contrassegnare esplicitamente gli oggetti da eliminare. L'implementazione risiede principalmente in . Ogni JVM può implementare la garbage collection. L'unico requisito è che deve soddisfare la specifica JVM.

Anche se sono disponibili molte JVM, Oracle Punto di accesso è di gran lunga il più comune in quanto offre un insieme robusto e maturo di opzioni di raccolta dei rifiuti.

  • L'HotSpot ha diversi garbage collector ottimizzati per vari casi d'uso e tutti i garbage collector seguono lo stesso processo di base.
  • Nella primissima fase, oggetti non referenziati vengono identificati e contrassegnati come pronti per la raccolta dei rifiuti.
  • Nella seconda fase, gli oggetti contrassegnati vengono eliminati. Facoltativamente, la memoria può essere compattata dopo che il Garbage Collector ha eliminato gli oggetti, quindi gli oggetti rimanenti si trovano in un blocco contiguo all'inizio dell'heap. Il processo di compattazione semplifica l'allocazione della memoria a nuovi oggetti in sequenza dopo il blocco di memoria allocato agli oggetti esistenti.

Tutti i garbage collector di HotSpot implementano una strategia di raccolta generazionale che classifica gli oggetti in base all'età. La logica alla base della garbage collection generazionale è che la maggior parte degli oggetti ha vita breve e sarà pronta per la garbage collection subito dopo la creazione.

Vediamo ora quali sono i diversi tipi di netturbini.

Tipi di Garbage Collector

La JVM fornisce quattro diversi garbage collector, tutti generazionali. Ognuno ha i suoi vantaggi e limiti. La scelta di quale garbage collector utilizzare spetta all'utente e possono esserci numerose differenze nella velocità effettiva e nelle pause dell'applicazione.

Esistono in particolare 4 tipi di netturbini.

  • Serial Garbage Collector (GC) :Tutti gli eventi di Garbage Collection vengono condotti in serie in un singolo thread. La compattazione viene eseguita dopo ogni raccolta dei rifiuti.
  • GC parallelo / a velocità effettiva: Più thread vengono utilizzati per operazioni di garbage collection minori / piccole. Un singolo thread viene utilizzato per la raccolta dei rifiuti principali e la compattazione di vecchia generazione. Inoltre, la variante Parallel utilizza più thread per la raccolta dei rifiuti principali e la compattazione di vecchia generazione.
  • CMS Collector :Più thread vengono utilizzati per la garbage collection piccola / minore utilizzando lo stesso algoritmo di Parallel. La maggior parte della Garbage Collection è multi-thread, ma CMS viene eseguito contemporaneamente con i processi dell'applicazione per ridurre al minimo gli eventi dell'applicazione. Non viene eseguita alcuna compattazione.
  • G1 Collector :Questo garbage collector è fondamentalmente inteso come un sostituto per CMS. È parallelo e concorrente come CMS, ma funziona in modo abbastanza diverso se confrontato con i vecchi garbage collector.

Vediamo i vantaggi della Garbage Collection in Java.

Vantaggi

  • Il più grande vantaggio della garbage collection di Java è che viene automaticamente gestisce la cancellazione di oggetti inutilizzati o di alcuni oggetti inaccessibili per liberare risorse di memoria.
  • Garbage Collection è ora un nuovo componente standard di molti linguaggi di programmazione popolari.
  • Rende Java efficiente in termini di memoria. È perché il Garbage Collector rimuove gli oggetti non referenziati dalla memoria heap.
  • È fatto automaticamente dal garbage collector che fa parte di JVM.

Migliori pratiche

L'approccio migliore per adattarsi alla garbage collection di Java consiste nell'impostare i flag sulla JVM. Le bandiere hanno la capacità di regolare il garbage collector da utilizzare. Aiuta a renderlo il più adatto per l'elaborazione back-end in cui sono accettabili lunghe pause per la raccolta dei rifiuti.

Un'altra cosa da notare qui è che il garbage collector CMS è progettato per ridurre al minimo le pause, il che lo rende ideale per le applicazioni GUI in cui la reattività è molto importante. È possibile eseguire ulteriori ottimizzazioni modificando la dimensione dell'heap o delle sue sezioni e misurando l'efficienza della raccolta dei rifiuti.

differenza tra sovraccarico e sovrascrittura in c ++

Diamo un'occhiata a questo programma.

class Edureka {int a int b public void setData (int c, int d) {a = cb = d} public void showData () {System.out.println ('Value of a =' + a) System.out.println ('Value of b =' + b)} public static void main (String args []) {Edureka e1 = new Edureka () Edureka e2 = new Edureka () e1.setData (1,2) e2.setData (3, 4) e1.showData () e2.showData () // Edureka e3 // e3 = e2 //e3.showData () // e2 = null //e3.showData () // e3 = null //e3.showData ()}}

In questo caso, i duevengono creati oggetti e due variabili di riferimento. Se aggiungi un altro comando e3 = Null,due variabili di riferimento punteranno allo stesso oggetto. E se non c'è alcun riferimento alla variabile, e3 = e2e3.showData () A questo punto, non ci sono riferimenti che puntano all'oggetto e diventa idoneo per la garbage collection.

Questo ci porta alla fine di questo articolo 'Garbage Collection in Java'. Abbiamo imparato come rimuovere gli oggetti inutilizzati nell'heap e i diversi tipi di raccolta.

Se hai trovato questo articolo su 'Garbage Collection in Java', controlla il da Edureka, una società di formazione online affidabile con una rete di oltre 250.000 studenti soddisfatti sparsi in tutto il mondo. Siamo qui per aiutarti in ogni fase del tuo viaggio, elaboriamo un curriculum progettato per studenti e professionisti che vogliono essere uno sviluppatore Java.

Hai domande per noi? Si prega di menzionarlo nella sezione commenti di questo 'Garbage Collection in Java ' e ti risponderemo il prima possibile.