¿Qué es la recolección de basura en Java?
La recolección de basura en Java es un proceso mediante el cual los programas realizan la administración de la memoria automáticamente. 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 operador que usa 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 asume que ya no es necesario y se puede recuperar la memoria ocupada por el objeto. No hay 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.
La recolección de basura en Java ocurre 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 usando la función free (). Aquí es donde conduce la gestió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: para aprender el mecanismo del recolector 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 = nulo;//s3.showData ();// s3 = nulo;//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 diagrama a continuación, dos variables de referencia apuntan al mismo objeto.
Paso 5) Elimine el comentario de las líneas 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 sigue apuntando al objeto y no es elegible para la recolección de basura de Java.
Paso 7) Elimine el comentario de 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 la recolección de basura, asigne su variable de referencia a nulo.
2) Los tipos primitivos no son objetos. No se les puede asignar un valor nulo.