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

¿Qué es el recolector de basura?

Garbage Collector es un programa que administra la memoria automáticamente, en donde la desasignación de objetos es manejada por Java en lugar del programador. En el lenguaje de programación Java, la asignación dinámica de objetos se logra utilizando el nuevo operador. Un objeto una vez creado 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 la memoria, ocupada por el objeto puede ser reclamada. No hay 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 la memoria pueden bloquearse cuando no queda memoria en el sistema para asignar. Se dice que estos programas tienen pérdidas de memoria.

La recolección de basura en Java se realiza automáticamente durante la vida útil del programa, lo que elimina la necesidad de desasignar la memoria y evitar así las pérdidas de memoria. En lenguaje C, es responsabilidad del programador desasignar la memoria asignada dinámicamente mediante la función free (). Aquí es donde lidera la administración de memoria de Java.

Nota: Todos los objetos se crean en la sección Heap de la memoria. Más sobre esto en un tutorial posterior.

Ejemplo: aprender el mecanismo del colector de basura en Java

Paso 1) Copie el siguiente código en un editor.

clase Estudiante {
    int a;
    int b;  
    public void setData(int c, int d) {   
        a = c;   
        b = d; 
    } 
    public void showData() {   
        System.out.println("Valor de a =" + a);   
        System.out.println("Valor de b =" + b); 
    } 
    public static void main(String args[]) {   
        Estudiante s1 = nuevo Estudiante();   
        Estudiante s2 = nuevo Estudiante();   
        s1.setData(1, 2);   
        s2.setData(3, 4);   
        s1.showData();   
        s2.showData();   
        // Estudiante 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.

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

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

Paso 5) Descomente la línea n.º 23 y 24. Compile, guarde y ejecute el código

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

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

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

¿Cómo eliminar un objeto en Java?

 

1) Si desea que su objeto sea elegible para Garbage Collection, asigne su variable de referencia a null.

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

Leave a Reply

Your email address will not be published. Required fields are marked *