es un lenguaje de programación de propósito general y si en caso de que se le ocurra una situación en la que haya datos no utilizados en su programa y no sepa cómo manejarlos, Garbage Collection en Java es útil. Por lo tanto, estoy escribiendo este artículo para ayudarlo a manejar estas funciones.
Cubriré los temas en el siguiente orden:
- ¿Qué es la recolección de basura en Java?
- ¿Cómo funciona la recolección de basura?
- Tipos de recolección de basura
- Ventajas
- Mejores prácticas
¡Empecemos!
¿Qué es la recolección de basura en Java?
En Java, los programadores se enfrentan al problema de tener que destruir el objetos que están fuera de uso. Pero con el recolector de basura, esto se puede solucionar fácilmente. El objetivo principal de este recolector de basura es liberar memoria del montón destruyendo los objetos que no contienen una referencia. La técnica se conoce como Recolección de basura.
También se considera un programa que ayuda a realizar la gestión automática de la memoria. Cuando se ejecutan en la JVM, los objetos se crean en el montón, que en realidad es una parte de la memoria dedicada al programa. Eventualmente, algunos objetos ya no serán necesarios. los recolector de basura encuentra estos objetos no utilizados y los elimina para liberar algo de memoria.
- Los programas que no desasignan memoria pueden eventualmente fallar cuando no queda memoria en el sistema para asignar. Se dice que todos estos programas tienen pérdidas de memoria.
- La recolección de basura en Java ocurre automáticamente durante la vida útil de un programa, eliminando la necesidad de desasignar memoria y por lo tanto evitando pérdidas de memoria.
- Métodos como gratis() en C y Eliminar() en C ++ pero, en Java, se realiza automáticamente. Entonces, proporciona una mejor gestión de la memoria.
Ahora, comprendamos cómo funciona esta recolección automática de basura en Java.
Nota : Se dice que un objeto es elegible para la recolección de basura si es inalcanzable.
¿Cómo funciona la recolección de basura?
La recolección de basura es un proceso de trabajo con la memoria del montón y también marca o identificar los objetos inalcanzables y destruirlos con compactación.
La recolección de basura en Java es un proceso automático y el programador no tiene que marcar explícitamente los objetos que se eliminarán. La implementación vive principalmente en el . Cada JVM puede implementar la recolección de basura. El único requisito es que cumpla con la especificación JVM.
Aunque hay muchas JVM disponibles, De Oracle HotSpot es, con mucho, el más común, ya que ofrece un conjunto sólido y maduro de opciones de recolección de basura.
- El HotSpot tiene varios recolectores de basura que están optimizados para varios casos de uso, y todos los recolectores de basura siguen el mismo proceso básico.
- En el primer paso, objetos sin referencia están identificados y marcados como listos para la recolección de basura.
- En el segundo paso, se eliminan los objetos marcados. Opcionalmente, la memoria se puede compactar después de que el recolector de basura elimina los objetos, por lo que los objetos restantes están en un bloque contiguo al comienzo del montón. El proceso de compactación facilita la asignación de memoria a nuevos objetos de forma secuencial después del bloque de memoria asignado a los objetos existentes.
Todos los recolectores de basura de HotSpot implementan una estrategia de recolección generacional que categoriza los objetos por edad. La razón fundamental detrás de la recolección de basura generacional es que la mayoría de los objetos son de corta duración y estarán listos para la recolección de basura poco después de su creación.
que es marioneta y chef
Ahora veamos cuáles son los diferentes tipos de recolectores de basura.
Tipos de recolector de basura
La JVM proporciona cuatro recolectores de basura diferentes, todos ellos generacionales. Cada uno tiene sus propias ventajas y limitaciones. La elección de qué recolector de basura usar recae en el usuario y puede haber numerosas diferencias en el rendimiento y las pausas de la aplicación.
Hay cuatro tipos de recolectores de basura.
- Recolector de basura en serie (GC) :Todos los eventos de recolección de basura se llevan a cabo en serie en un solo hilo. La compactación se ejecuta después de cada recolección de basura.
- GC paralelo / de rendimiento: Se utilizan varios subprocesos para la recolección de basura menor / pequeña. Se utiliza un solo hilo para la recolección de basura principal y la compactación de la vieja generación. Además, la variante Parallel utiliza varios subprocesos para la recolección de basura principal y la compactación de la vieja generación.
- Recopilador de CMS :Se utilizan varios subprocesos para la recolección de basura pequeña / menor utilizando el mismo algoritmo que Parallel. La mayoría de la recolección de basura es multiproceso, pero el CMS se ejecuta al mismo tiempo que los procesos de la aplicación para minimizar los eventos de la aplicación. No se realiza compactación.
- Colector G1 :Este recolector de basura está diseñado básicamente como un reemplazo de CMS. Es paralelo y concurrente como CMS, pero funciona de manera bastante diferente cuando se compara con los recolectores de basura más antiguos.
Comprendamos las ventajas de la recolección de basura en Java.
Ventajas
- El mayor beneficio de la recolección de basura de Java es que automáticamente maneja la eliminación de objetos no utilizados o algunos objetos que son inaccesibles para liberar recursos de memoria.
- Garbage Collection es ahora un nuevo componente estándar de muchos lenguajes de programación populares.
- Hace que Java sea eficiente en memoria. Es porque el recolector de basura elimina los objetos sin referencia de la memoria del montón.
- Es hecho automáticamente por el recolector de basura que forma parte de JVM.
Mejores prácticas
El mejor enfoque para adaptarse a la recolección de basura de Java es establecer indicadores en la JVM. Las banderas tienen la capacidad de ajustar el recolector de basura que se utilizará. Ayuda a que sea el más adecuado para el procesamiento de backend donde se aceptan largas pausas para la recolección de basura.
convertir decimal a binario en python
Otra cosa a tener en cuenta aquí es que el recolector de basura CMS está diseñado para minimizar las pausas, lo que lo hace ideal para aplicaciones GUI donde la capacidad de respuesta es muy importante. Se puede realizar un ajuste fino adicional cambiando el tamaño del montón o sus secciones y midiendo la eficiencia de recolección de basura.
Echemos un vistazo a este programa.
class Edureka {int a int b public void setData (int c, int d) {a = cb = d} public void showData () {System.out.println ('Valor de a =' + a) System.out.println ('Valor de 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 ()}}
En este caso, los dosSe crean objetos y dos variables de referencia. Si agrega otro comando e3 = Null,dos variables de referencia apuntarán al mismo objeto. Y si no hay ninguna referencia a la variable, e3 = e2e3.showData () En este punto, no hay referencias que apunten al objeto y se vuelve elegible para la recolección de basura.
Esto nos lleva al final de este artículo sobre 'Recolección de basura en Java'. Hemos aprendido cómo eliminar objetos no utilizados en el montón y los diferentes tipos de colección.
Si encontró este artículo sobre 'Recolección de basura en Java', consulte el por Edureka, una empresa de aprendizaje en línea de confianza con una red de más de 250.000 alumnos satisfechos repartidos por todo el mundo. Estamos aquí para ayudarlo en cada paso de su viaje, creamos un plan de estudios diseñado para estudiantes y profesionales que desean ser desarrolladores de Java.
Tienes una pregunta para nosotros? Por favor, menciónelo en la sección de comentarios de este 'Recolección de basura en Java ” y nos pondremos en contacto contigo lo antes posible.