Beheben Sie den Java.Lang.OutOfMemoryError: GC Overhead Limit Exceeded
-
der Fehler
Java.Lang.OutOfMemoryError: GC Overhead Limit Exceeded
-
Beheben Sie den Fehler
Java.Lang.OutOfMemoryError: GC Overhead Limit Exceeded
Dieses Tutorial demonstriert den Fehler Java.lang.outofmemoryerror: GC-Overhead-Limit überschritten
in Java.
der Fehler Java.Lang.OutOfMemoryError: GC Overhead Limit Exceeded
Im Gegensatz zu anderen Programmiersprachen verwendet die Java-Laufzeit einen Garbage-Collector-GC-Prozess für die Garbage-Collection. In Java löscht der Garbage Collector den Speicher für sie, wenn ein bestimmter Teil des Speichers nicht verwendet wird.
Der Fehler Java.Lang.OutOfMemoryError: GC Overhead Limit Exceeded
tritt auf, wenn unser Code oder unsere Anwendung den gesamten Speicher erschöpft hat und GC den Speicher nicht mehr bereinigen kann.
Der Fehler Java.Lang.OutOfMemoryError: GC Overhead Limit Exceeded
signalisiert, dass die JVM zu lange gebraucht hat, um die Garbage Collection durchzuführen. JVM gibt diesen Fehler aus, wenn die Garbage-Collection 98 % der Zeit in Anspruch nimmt und nur die anderen 2 % des Heaps wiederhergestellt werden können.
Hier ist ein Beispiel, das denselben Fehler auslöst:
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");
}
}
}
Der obige Code fügt den Zufallswert kontinuierlich in die Karte ein, bis die Garbage Collection 98 % erreicht, und löst den Fehler Java.Lang.OutOfMemoryError: GC Overhead Limit Exceeded
aus. Der Heap-Speicher wird in den Karten verwendet.
Siehe Ausgabe:
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "main"
Selbst wenn wir diesen Code mit einem parallelen Garbage Collector ausführen, wird immer noch derselbe Fehler ausgegeben. Siehe das Beispiel über CMD:
java -Xmx100m -XX:+UseParallelGC Example.java
Es wird immer noch der gleiche Fehler ausgegeben. Siehe Ausgabe:
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)
Beheben Sie den Fehler Java.Lang.OutOfMemoryError: GC Overhead Limit Exceeded
Die Lösung für diesen Fehler besteht darin, Speicherlecks zu verhindern. Stellen Sie sicher, dass die folgenden Punkte befolgt werden, damit Sie Speicherlecks verhindern können:
- Identifizieren Sie die Stellen, an denen die Speicherzuweisung für den Heap erfolgt.
- Es ist die beste Vorgehensweise, das Erstellen einer großen Menge von schwach referenzierten oder temporären Objekten zu vermeiden, da sie meistens der Grund für Speicherverluste sind.
- Identifizieren Sie das Objekt, das einen großen Platz auf dem Haufen einnimmt.
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 FacebookVerwandter Artikel - Java Error
- Adresse wird bereits verwendet JVM_Bind-Fehler in Java
- Android Java.Lang.IllegalStateException behoben: Methode der Aktivität konnte nicht ausgeführt werden
- Ausnahme im Hauptthread Java.Lang.ClassNotFoundException in IntelliJ IDEA
- Ausnahme im Hauptthread Java.Lang.NoClassDefFoundError
- Beheben Sie das Problem, dass Java nicht installiert werden kann. Es gibt Fehler in den folgenden Schaltern
- Beheben Sie den Fehler `Es wurde keine Java Virtual Machine gefunden` in Eclipse