Resuelva Java.Lang.OutOfMemoryError: Límite de gastos generales de GC excedido
-
el error
Java.Lang.OutOfMemoryError: GC Overhead Limit Exceeded
Error -
Resuelva el error
Java.Lang.OutOfMemoryError: GC Overhead Limit Exceeded
Error
Este tutorial demuestra el error Java.lang.outofmemoryerror: GC overhead limit exceeded
en Java.
el error Java.Lang.OutOfMemoryError: GC Overhead Limit Exceeded
Error
A diferencia de otros lenguajes de programación, el tiempo de ejecución de Java utiliza un proceso GC de recolección de elementos no utilizados para la recolección de elementos no utilizados. En Java, el recolector de basura borrará la memoria cada vez que no se use una parte particular de la memoria.
El error Java.Lang.OutOfMemoryError: GC Overhead Limit Exceeded
ocurre cuando nuestro código o aplicación agota toda la memoria y GC ya no puede limpiar la memoria.
El error Java.Lang.OutOfMemoryError: GC Overhead Limit Exceeded
indica que la JVM ha tardado demasiado en realizar la recolección de elementos no utilizados. JVM generará este error cuando se tarde el 98 % del tiempo en realizar la recolección de elementos no utilizados y solo se pueda recuperar el otro 2 % del almacenamiento dinámico.
Aquí hay un ejemplo que arroja el mismo error:
package delftstack;
import java.util.*;
public class Example {
public static void main(String args[]) throws Exception {
Map DemoMap = System.getProperties();
Random DemoRandom = new Random();
while (true) {
DemoMap.put(DemoRandom.nextInt(), "value");
}
}
}
El código anterior colocará continuamente el valor aleatorio en el mapa hasta que la recolección de elementos no utilizados alcance el 98 %, y arrojará el mensaje Java.Lang.OutOfMemoryError: GC Overhead Limit Exceeded
. La memoria del montón se utiliza en los mapas.
Ver salida:
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "main"
Incluso si ejecutamos este código usando un recolector de basura paralelo, seguirá arrojando el mismo error. Ver el ejemplo a través de CMD:
java -Xmx100m -XX:+UseParallelGC Example.java
Seguirá arrojando el mismo error. Ver salida:
C:\Users\Sheeraz>java -Xmx100m -XX:+UseParallelGC Example1.java
Note: Example1.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.base/java.util.concurrent.ConcurrentHashMap.putVal(ConcurrentHashMap.java:1047)
at java.base/java.util.concurrent.ConcurrentHashMap.put(ConcurrentHashMap.java:1006)
at java.base/java.util.Properties.put(Properties.java:1301)
at delftstack.Example.main(Example1.java:9)
Resuelva el error Java.Lang.OutOfMemoryError: GC Overhead Limit Exceeded
Error
La solución a este error es evitar pérdidas de memoria. Asegúrese de seguir los puntos a continuación para evitar pérdidas de memoria:
- Identifique los lugares donde se realiza la asignación de memoria para el montón.
- La mejor práctica es evitar la creación de una gran cantidad de objetos débilmente referenciados o temporales porque, en su mayoría, son la causa de la fuga de memoria.
- Identifique el objeto que ocupa un espacio grande en el montón.
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 FacebookArtí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