Recolección de basura de Java Force

Sheeraz Gul 20 junio 2023
Recolección de basura de Java Force

Este tutorial demuestra cómo forzar la recolección de basura en Java.

Recolección de basura de Java Force

Siempre que la utilización del almacenamiento dinámico se acerque al 100%, el riesgo de OutOfMemoryError aumentará al máximo. En ese momento, la JVM requerirá forzar la recolección de basura y liberar la memoria.

La mayoría de las veces, no podemos forzar la JVM para la recolección de basura, pero podemos usar algunos métodos para realizar la recolección de basura cuando sea necesario.

Este tutorial demuestra los diferentes métodos de recolección de basura en Java.

Llame a System.gc() para la recolección de basura en Java

El método System.GC() se puede llamar en cualquier parte del código Java para realizar la recolección de basura. Priorizará la recolección de basura, y cada vez que se llame, la recolección de basura ocurrirá en segundos.

La sintaxis de este método es:

System.gc();

Solo tenemos que llamar a System.gc() para realizar la recolección de basura en cualquier parte del código. Esto funcionará de manera similar para forzar la recolección de basura.

Llame a Runtime.getRuntime().gc() para la recolección de basura en Java

El Runtime.getRuntime().gc() llamará al System.gc(), por lo que funciona de manera similar para priorizar la recolección de basura. El Runtime.getRuntime() ejecuta comandos de terminal en el código Java.

Los métodos Runtime.getRuntime().gc() y System.gc son los mismos. La sintaxis de este método es:

Runtime.getRuntime().gc();

Simplemente llame a este método como la sintaxis, y la JVM realizará la recolección de elementos no utilizados para liberar espacio en la memoria.

Use jcmd para forzar la recolección de basura en Java

El comando de diagnóstico de Java jcmd es una utilidad integrada de JDK que activa una rutina de recolección de basura. Esta recolección de elementos no utilizados se activa cuando la JVM puede programar una pausa de manera segura.

El comando arrojará el mismo error que jmap si la JVM no puede realizar la pausa.

La sintaxis de este comando es:

jcmd 1234 GC.run

Donde el número es la identificación del proceso, y GC.run se usa para invocar la recolección de elementos no utilizados.

Use Java Mission Control o JConsole para forzar la recolección de basura en Java

Java Mission Control y JConsole proporcionan una interfaz fácil de usar que interactúa con el comando jcmd. Java Mission Control o JConsole pueden forzar la JVM para la recolección de elementos no utilizados.

La herramienta JConsole proporciona un botón llamado Ejecutar recolección de basura en su página de administración de memoria. Al hacer clic en él, podemos obligar a JVM a realizar la recolección de basura.

Java Mission Control puede ayudar a los desarrolladores a seleccionar cualquier funcionalidad jcmd, que también incluye GC.run, que se puede ejecutar con solo hacer clic en un botón.

Ambas herramientas invocarán el comando de recolección de basura jcmd detrás de escena.

Use jmap para forzar la recolección de basura en Java

El JMAP (mapa de memoria de Java) proporciona un método para imprimir el histograma del montón. Y siempre que se invoque el comando jmap, forzará la rutina de recolección de basura, que no se considera la forma correcta de forzar una recolección de basura.

Si la JVM tiene una carga de trabajo y no se puede realizar la recolección de elementos no utilizados, el comando jmap generará un error.

Ver el comando:

jmap -histo:live 1234

Donde en vivo es la opción de histograma y el número delante de eso es la identificación del proceso.

Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

Artículo relacionado - Java Garbage Collection