Error de límite de gastos generales de GC excedido en Java
- Breve introducción al error de límite de gastos generales de GC excedido en Java
- Resuelva el error de límite de gastos generales de GC excedido en Java
- Conclusión
Este artículo discutirá el error Se excedió el límite de sobrecarga de GC
en Java.
Breve introducción al error de límite de gastos generales de GC excedido en Java
En Java, JVM (Java Virtual Machine) libera la memoria cuando el programa ya no usa los objetos. El proceso de liberar memoria se llama Garbage Collection (GC).
El error Se excedió el límite de sobrecarga de GC
muestra que los recursos/memoria se están agotando. Este error pertenece a la familia de errores java.lang.OutOfMemoryError
.
Según la documentación oficial de Java, JVM (Java Virtual Machine) arroja este error para indicar que el programa o la aplicación dedica más tiempo a la recolección de elementos no utilizados que a cualquier trabajo valioso, es decir, cuando el 98 % del tiempo se dedica a la recolección de elementos no utilizados por la aplicación.
Ahora, veamos un ejemplo para entenderlo mejor.
import java.util.*;
public class test {
public static void main(String args[]) throws Exception {
Map<Integer, String> map = new HashMap<>();
Random rnd = new Random();
while (true) {
map.put(rnd.nextInt(), "val");
}
catch (Exception e) {
System.out.println("ye");
}
}
}
Hemos creado un mapa
en el código anterior e insertado valores infinitamente. Un punto de nota para recordar es que los mapas
usan memoria de montón.
Y ejecutamos el código con un recolector de basura paralelo para obtener Error de límite de sobrecarga de GC excedido
.
java - Xmx100m - XX : +UseParallelGC test
Cuando el código anterior se ejecuta con el recolector de elementos no utilizados paralelo, obtendremos el mensaje java.lang.OutOfMemoryError: límite de sobrecarga de GC excedido
. Sin embargo, esto puede diferir de una computadora a otra debido al tamaño del almacenamiento dinámico de Java o a un algoritmo de GC diferente.
Resuelva el error de límite de gastos generales de GC excedido en Java
La idea aquí es detener las fugas de memoria en nuestra aplicación. Podemos ser cautelosos siguiendo los puntos a continuación para evitar este error en nuestro programa.
- Identifique la ubicación de los objetos donde se realiza la asignación de memoria en un montón.
- Evite los objetos débilmente referenciados y la gran cantidad de objetos temporales, ya que aumentan la probabilidad de pérdida de memoria.
- Identificar los objetos que ocupan una gran cantidad de espacio en un montón.
Conclusión
En este artículo, aprendimos sobre el error Se excedió el límite de sobrecarga de GC
que ocurre cuando un programa pasa más tiempo en la recolección de basura que en una tarea útil. Entendimos que esto podría evitarse manteniendo un buen control en las posiciones donde la memoria del montón se asigna a los objetos para evitar las fugas de memoria, evitando así que el programa obtenga este error.
Artículo relacionado - Java Error
- Arreglar Java fue iniciado por el código de salida devuelto = 1
- Arreglar JAVA_HOME no se puede determinar a partir del error de registro en R
- Arreglar java.io.IOException: No queda espacio en el dispositivo en Java
- Arreglar Java.IO.NotSerializableException en Java
- Arreglar Java.Lang.IllegalStateException de Android: no se pudo ejecutar el método de la actividad
- Arreglar Java.Lang.NoClassDefFoundError: No se pudo inicializar el error de clase