Nach viel Mühe ich nicht, das Problem zu überwinden, sich einen GrenzwertVermeiden „GC Obergrenze überschritten“ Fehler
GC Kopf scheinen überschritten
Fehler in meinem Java-Programm.
Es tritt innerhalb einer großen Methode auf, die große Zeichenfolgenmanipulation, viele Listen von Objekten und Zugriff auf DB enthält. Ich habe folgendes versucht:
- nach der Verwendung der einzelnen Arraylist, habe ich hinzugefügt: list = new Arraylist <>(); Liste = null;
- für die Strings, anstatt z.B. 50 hängt an (str + = "....") Ich versuche einen mit dem gesamten Text anzufügen
- nach jedem DB-Zugriff schließe ich die Anweisungen und die resultSets.
Diese Methode wird von der Haupt wie folgt aufgerufen:
for(int i=0; i<L; i++) {
cns = new Console(i);
cns.processData();//this is the method
cns=null;
}
Wenn diese Schleife 1 oder 2 mal ausgeführt wird, ist alles ok. Für L> = 3 ist es fast sicher, dass ich den Garbage Collector Fehler bekommen werde.
Sollte nicht die Tatsache, dass ich eine cns = null nach jeder Ausführung der Methode, den GC zwingen und alles von der vorherigen Ausführung frei?
Sollte ich auch alle privaten Attribute des Objekts löschen, bevor Sie es auf null setzen? Vielleicht könnte ein Thread.sleep() den GC nach jeder Schleife erzwingen?
Wahrscheinlich Sie dritten Lauf belegt zu viel Speicher. Ich würde vorschlagen, Ihre große Methode in kleinere aufzuteilen. GC manuell aufrufen und Thread.spleep ist ein falscher Ansatz. – Admit