GC-Overhead-Limit überschritten Fehler in Java
- Kurze Einführung in den GC Overhead Limit Exceeded Error in Java
-
Beheben Sie den Fehler
GC Overhead Limit Exceeded
in Java - Abschluss
In diesem Artikel wird der Fehler GC-Overhead-Limit überschritten
in Java behandelt.
Kurze Einführung in den GC Overhead Limit Exceeded Error in Java
In Java gibt JVM (Java Virtual Machine) den Speicher frei, wenn das Programm die Objekte nicht mehr verwendet. Der Vorgang des Freigebens von Speicher wird Garbage Collection (GC) genannt.
Der Fehler GC-Overhead-Limit überschritten
zeigt an, dass Ressourcen/Speicher erschöpft sind. Dieser Fehler fällt unter die Fehlerfamilie java.lang.OutOfMemoryError
.
Gemäß der offiziellen Java-Dokumentation gibt JVM (Java Virtual Machine) diesen Fehler aus, um anzuzeigen, dass das Programm oder die Anwendung mehr Zeit mit der Garbage Collection verbringt als mit wertvoller Arbeit, d. h. wenn 98 % der Zeit mit der Garbage Collection verbracht wird die Anwendung.
Sehen wir uns nun ein Beispiel an, um es besser zu verstehen.
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");
}
}
}
Wir haben im obigen Code eine Karte
erstellt und Werte unendlich eingefügt. Ein zu beachtender Punkt ist, dass maps
Heap-Speicher verwenden.
Und wir führen den Code mit einem parallelen Garbage Collector aus, um den Fehler GC-Overhead-Limit überschritten
zu erhalten.
java - Xmx100m - XX : +UseParallelGC test
Wenn der obige Code mit dem parallelen Garbage Collector ausgeführt wird, erhalten wir die Meldung java.lang.OutOfMemoryError: GC-Overhead-Limit überschritten
. Dies kann sich jedoch von Computer zu Computer aufgrund der Java-Heap-Größe oder eines anderen GC-Algorithmus unterscheiden.
Beheben Sie den Fehler GC Overhead Limit Exceeded
in Java
Die Idee hier ist, Speicherlecks in unserer Anwendung zu stoppen. Wir können vorsichtig sein, indem wir die folgenden Punkte befolgen, um diesen Fehler in unserem Programm zu vermeiden.
- Identifizieren Sie die Position von Objekten, an denen die Speicherzuweisung in einem Heap erfolgt.
- Vermeiden Sie schwach referenzierte Objekte und die große Menge an temporären Objekten, da sie die Wahrscheinlichkeit von Speicherlecks erhöhen.
- Identifizieren Sie die Objekte, die auf einem Haufen viel Platz einnehmen.
Abschluss
In diesem Artikel haben wir von dem Fehler GC Overhead Limit überschritten
erfahren, der auftritt, wenn ein Programm mehr Zeit mit der Garbage Collection verbringt als mit einer nützlichen Aufgabe. Wir haben verstanden, dass dies verhindert werden kann, indem die Positionen, an denen Heap-Speicher Objekten zugewiesen wird, gut überprüft werden, sodass Speicherlecks vermieden werden können, wodurch verhindert wird, dass das Programm diesen Fehler erhält.
Verwandter 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