¿Qué es la recolección de basura en Java?

¿Qué es la recolección de basura en Java?

Recolección de basura en Java Es un proceso mediante el cual los programas realizan la gestión de la memoria de forma automática. El recolector de basura (GC) encuentra los objetos no utilizados y los elimina para recuperar la memoria. En Java, la asignación de memoria dinámica de objetos se logra utilizando el nuevo operator que utiliza algo de memoria y la memoria permanece asignada hasta que haya referencias para el uso del objeto.

Cuando no hay referencias a un objeto, se supone que ya no es necesario y se puede recuperar la memoria ocupada por el objeto. No existe una necesidad explícita de destruir un objeto ya que Java maneja la desasignación automáticamente.

La técnica que logra esto se conoce como Recolección de basura. Los programas que no desasignan memoria pueden eventualmente fallar cuando no queda memoria en el sistema para asignar. Se dice que estos programas tienen pérdidas de memoria.

Recolección de basura en Java sucede automáticamente durante la vida útil del programa, eliminando la necesidad de desasignar memoria y evitando así pérdidas de memoria.

En lenguaje C, es responsabilidad del programador desasignar la memoria asignada dinámicamente utilizando la función free(). Aquí es donde nos lleva la gestión de la memoria Java.

Nota: Todos los objetos se crean en Sección del montón de la memoria. Más sobre esto en un later tutorial.

Ejemplo: aprender el mecanismo del recolector de basura en Java

Paso 1) copia el siguientewing código en un editor.

class Student{
int a;
int b;
  public void setData(int c,int d){
    a=c;
    b=d;
  }
  public void showData(){
    System.out.println("Value of a = "+a);
    System.out.println("Value of b = "+b);
  }
  public static void main(String args[]){
    Student s1 = new Student();
    Student s2 = new Student();
    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();
  }
}

Paso 2) Guarde, compile y ejecute el código. Como se muestra en el diagrama, se crean dos objetos y dos variables de referencia.


Mecanismo recolector de basura

Paso 3) Descomentar la línea # 20,21,22. Guarde, compile y ejecute el código.

Paso 4) Como se muestra en el diagrama siguiente, dos variables de referencia apuntan al mismo objeto.

Mecanismo recolector de basura

Paso 5) Descomente las líneas n.° 23 y 24. Compile, guarde y ejecute el código

Paso 6) Como se muestra en el diagrama siguiente, s2 se vuelve nulo, pero s3 todavía apunta al objeto y no es elegible para la recolección de basura de Java.


Mecanismo recolector de basura

Paso 7) Descomente las líneas n.° 25 y 26. Guarde, compile y ejecute el código

Paso 8) En este punto, no hay referencias que apunten al objeto y pasa a ser elegible para la recolección de basura. Se eliminará de la memoria y no habrá forma de recuperarlo.

Aprender recolector de basura

¿Cómo eliminar un objeto en Java?

1) Si desea que su objeto sea elegible para la recolección de basura, asigne su variable de referencia a nula.

2) Los tipos primitivos no son objetos. No se les puede asignar nulos.

Cómo eliminar un objeto en Java