Error de límite de gastos generales de GC excedido en Java

Suraj P 12 octubre 2023
  1. Breve introducción al error de límite de gastos generales de GC excedido en Java
  2. Resuelva el error de límite de gastos generales de GC excedido en Java
  3. Conclusión
Error de límite de gastos generales de GC excedido en Java

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.

  1. Identifique la ubicación de los objetos donde se realiza la asignación de memoria en un montón.
  2. Evite los objetos débilmente referenciados y la gran cantidad de objetos temporales, ya que aumentan la probabilidad de pérdida de memoria.
  3. 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.

Autor: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub

Artículo relacionado - Java Error