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 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