OutOfmemory Exception bei sehr großer Liste (Tomcat Webservice)

RBS2002

Aktives Mitglied
Hi,

ich habe folgendes Problem mit folgender Ausgangssituation:

* Liste mit ca. 40000 Datenobjekten wird von IBATIS zurückgegeben - bis dahin durch fetch Operation alles fehlerfrei
* Diese Datenobjekte enthalten jeweils 1 Liste mit 2 Einträgen die in separate Objekte gekapselt werden müssen ==> es entsteht eine Liste mit 80000 Datenobjekten (je 7 Objekte mit seperaten Namen von der internen Liste vom neuen Typ)

Die Liste mit den 80000 Datenobjekten wird danach sortiert (Anforderung an den Webservice). Soweit so gut - nur bekomme ich bei der Generierung der 2.Liste eine OutofMemory Exception. Versuche schon, nachdem das alte Objekt von der ersten Liste nicht mehr gebraucht wird, dieses zu löschen und den gc anzuwerfen bzw. diesen anwerfen zu wollen (java entscheidet ja bei system.gc() glaube ich selber). Habe jetzt schon an diversen Parametern für die java Speicherverwaltung gespielt und es soweit hinbekommen das er 100 Einträge verarbeiten kann - nur bei 40000 ist das natürlich sehr wenig.
Ich bin noch auf der Suche nach einer Lösung - aber wie würdet ihr in dem Fall vorgehen bzw. was sollte man unbedingt vermeiden (Schleifen etc. kann ich ja nicht vermeiden)

Vielen Dank im Voraus und mfG
RBS2002
 
M

maki

Gast
Hi,

wäre es möglich dass du nicht alles auf einmal lädst? (pagination/paging)

Gibt es eine PaginatedList in deiner iBatis Version?
 

Kevin94

Top Contributor
Was sind das für Objekte, dass bei mehr als 100 davon der Speicher voll ist? Wenn man mal davon ausgeht, dass 1000MB RAM für den Server mindestens drin sind, müsste so ein Objekt, mit abhängigen Objekten, fast 10MB haben. Oder kriegt der Webserver viel weniger RAM als ich jetzt veranschlagt hab?
Aber selbst mit der Standart Einstellung von 128MB Heap müsste so ein Objekt noch fast 1MB haben, um das zu erklären.

GC manuell anwerfen bringt afaik garnichts, zum einen ist es nur eine Aufforderung, kein Zwang, zum anderen wird bevor ein OutOfMemoryError geworfen wird, der GC sowieso angeworfen.
Wenn die erste Liste ausserdem so klein ist, dass die 40.000 Objekte bequem in den Speicher passen, bei den generierten Objekten aber nur 100, ist das Löschen der alten Objekte nur ein Tropfen auf den heißen Stein.
 

RBS2002

Aktives Mitglied
die Objekte an sich sind nicht sehr groß, es sind im Prinzip nur Strings (und glaube 2,3 Integer) - also nichts was dieses wirklich erklären würde, zu mindestens wird der Speicher, selbst wenn 1000MB laut SoapUI zur Verfügung stehen, ordentlich zugeballert - bis zum Ibatis Teil ist es durch ein fetching von 500 schon problemlos, ohne das gibt es schon dort Probleme. Wenn ich morgen wieder an den Code komme kann ich den ja mal posten, vielleicht mache ich das auch zu kompliziert und man kann noch etwas optimieren (das sowieso, zu mindestens im Code Stil, ist bisher mehr Trial&Error bis es läuft). Habe auch schon an ein paar Parametern rumgespielt um Java für den Heap mehr Speicher zur Verfügung zu stellen, aber bisher noch nicht die richtigen Konfigurationen gefunden - konnte es bisher nur von 30 Sekunden auf 6 Minuten steigern - bis es abbricht. Mein Rechner hat 8GB Ram und Windows 7 - vielleicht hat ja jemand da Vorschläge.

Ansonsten hört sich diese PaginatedList gut an, kenne ich bisher noch gar nicht und werde ich morgen mal ausprobieren. Wenn der Garbage das aktuelle Datenbankobjekt gleich aus dem Speicher entfernen kann wäre das ja schonmal eine gute Lösung, so wird es sicher trotz dem remove am Ende der Schleife sicher im Speicher behalten und irgendwann entfernt.

Ansonsten vielen Dank erstmal :)
 

RBS2002

Aktives Mitglied
Das Problem hatte wahrscheinlich folgenden Ursprung:

- Anscheined verballert SOAPUI beim zeichnen des Ausgabefensters so viel Speicher das er dadurch eine OutOfMemory Exception
- Bei der Überführung von den Java Listen zu den SOAP Arrays wurde auch extrem bzw. ungewöhnlich viel Speicher verbraten
- SOAPUI scheint momentan einen Bug zu haben das, wenn in einer Ausgabezeile zu viel Text steht (bzw. zu lange), das Programm komplett abstürzt (mit nightlyBuild und Release Version). So konnte er eine XML im Pretty Format ohne Probleme ausgeben, als BASE64 String oder im RAW Format kam es zum Absturz wenn das SOAPUI Fenster aktiv war oder kurz danach der GC angeworfen wurde

Irgendwie wurde das Problem damit behoben. Vielleicht bringt JSON etc. noch ein paar Einsparungen in Sachen Performance - ansonsten läuft es erstmal soweit. Ein Paging gab es direkt nicht (zu mindestens nicht beim SqlMapClientTemplate, die dortige Skip und Max Funktionalität hat das eher noch verstärkt bzw. aus 5 Minuten sind ca. 65 geworden)

Ansonsten vielen Dank für eure Hilfe,
mfG RBS2002
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A java.lang.OutOfMemory Java Basics - Anfänger-Themen 6
T OutOfMemory und Bilder Java Basics - Anfänger-Themen 15
I Exception wird gefangen, aber trotzdem in Error Log? Java Basics - Anfänger-Themen 10
W Null-Pointer Exception beim Programmstart Java Basics - Anfänger-Themen 8
Ostkreuz String Exception Java Basics - Anfänger-Themen 8
Fiedelbambu Exception in Application constructor Java Basics - Anfänger-Themen 3
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
F abbruch Exception lässt sich nicht erstellen Java Basics - Anfänger-Themen 2
U Warum kriege ich hier eine nullpointer exception, sehe den Fehler nicht (swing) Java Basics - Anfänger-Themen 1
F Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 11 at main.main(main.java:11) Java Basics - Anfänger-Themen 2
M Exception in thread "main" java.util.NoSuchElementException Java Basics - Anfänger-Themen 2
N Exception beim Verwenden von Arraylist? Java Basics - Anfänger-Themen 10
B Compiler-Fehler Fehlermeldung Exception in thread, falsche Eingabewert Java Basics - Anfänger-Themen 2
S JavaKara Null Exception Error Java Basics - Anfänger-Themen 4
T Eigene Exception - ohne werfen abfangen Java Basics - Anfänger-Themen 2
LiFunk Exception: es dürfen nur Nummern eingelesen werden Java Basics - Anfänger-Themen 6
low_in_the_head Eigene Exception nutzen Java Basics - Anfänger-Themen 4
1 Exception Java Basics - Anfänger-Themen 2
S Kriege Fehler "Exception in thread" beim Benutzen von SubStrings. Java Basics - Anfänger-Themen 2
I JAX-RS Exception Handling Java Basics - Anfänger-Themen 4
L Meine erste eigene Exception Klasse Java Basics - Anfänger-Themen 10
J null exception Array Java Basics - Anfänger-Themen 5
H Frage zu Throw Exception Java Basics - Anfänger-Themen 2
O Exception in thread "main" java.lang.ArithmeticException: / by zero Java Basics - Anfänger-Themen 4
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
C Exception-Frage Java Basics - Anfänger-Themen 3
B Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException Java Basics - Anfänger-Themen 8
I Exception bei Button mit wait() und notifyAll() Java Basics - Anfänger-Themen 3
N Wie teste ich eine geworfene Exception? Java Basics - Anfänger-Themen 8
R Methoden ArrayList clonen wirft exception Java Basics - Anfänger-Themen 3
D Scanner- Exception NoSuchElementException Java Basics - Anfänger-Themen 2
N Exception werfen bei falscher Datumseingabe Java Basics - Anfänger-Themen 14
A Exception handeling mit finally und objektreferenzen Java Basics - Anfänger-Themen 6
D Frage zu Strings einer Exception Java Basics - Anfänger-Themen 4
S Exception Java Basics - Anfänger-Themen 2
J Exception-Aufgabe Java Basics - Anfänger-Themen 8
S Verwenden von throw Exception an der Funktion Java Basics - Anfänger-Themen 2
R Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 5
S Compiler-Fehler Exception in thread "main" java.lang.Error: Unresolved compilation problem: Java Basics - Anfänger-Themen 6
Z Fragen zu Exception (Throws/throw) Java Basics - Anfänger-Themen 7
OSchriever Exception für Abbrechen-Schaltfläche JOptionpane Java Basics - Anfänger-Themen 9
J Dateien in Verzeichnissen rekursiv auflisten wirft Exception Java Basics - Anfänger-Themen 4
J Exception unreachable Java Basics - Anfänger-Themen 12
O unchecked Exception Java Basics - Anfänger-Themen 4
P Exception werfen Java Basics - Anfänger-Themen 15
B EJB und Arquillian - bekomme Nullpointer Exception beim Aufruf der EJB Klasse Java Basics - Anfänger-Themen 40
S Exception bei Verwendung von LocalDate Java Basics - Anfänger-Themen 19
I Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 Java Basics - Anfänger-Themen 3
D Warum die Nullpointer Exception Java Basics - Anfänger-Themen 6
O Exception behandlung einfach Ueben mit Fakt! Java Basics - Anfänger-Themen 10
I OOP Was ist die "Exception Hierarchie" ? Java Basics - Anfänger-Themen 3
U Null Exception aber keine Ahnung warum Java Basics - Anfänger-Themen 5
G Exception und Ausgabe der Duplikate Java Basics - Anfänger-Themen 6
H Try Catch Throw Exception Java Basics - Anfänger-Themen 1
W Exception in Main abfangen oder in der Methode? Java Basics - Anfänger-Themen 10
F Referenz an ein Objekt in einer anderen Klasse erstellen(Nullpointer exception) Java Basics - Anfänger-Themen 6
Mosquera Exception Java Basics - Anfänger-Themen 5
M rekursive division/0 mit exception Java Basics - Anfänger-Themen 18
N Nullpointer exception Java Basics - Anfänger-Themen 4
L Eigene Exception schreiben bei zu langem Array Java Basics - Anfänger-Themen 10
R Exception in thread "main" java.lang.NullPointerException Java Basics - Anfänger-Themen 10
I equals (Override) mit eigener Exception (keine Runtime-Exception) Java Basics - Anfänger-Themen 9
S Array Grenzen-Exception Java Basics - Anfänger-Themen 11
E InputStream im Servlet wirft Exception Java Basics - Anfänger-Themen 5
D Erste Schritte Java.lang.NullPointer.Exception Java Basics - Anfänger-Themen 8
G Arrays out of Bounds exception Java Basics - Anfänger-Themen 2
H Compiler-Fehler Out of Bunce Exception bei einem Char Java Basics - Anfänger-Themen 6
C Compiler-Fehler Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 Java Basics - Anfänger-Themen 3
C Null Pointer Exception Java Basics - Anfänger-Themen 10
F Klassen Eigene Exception Bedingungen festlegen Java Basics - Anfänger-Themen 2
G Null Pointer Exception Java Basics - Anfänger-Themen 4
GreenTeaYT Exception und zur OOP fragen? Java Basics - Anfänger-Themen 3
O Exception bei Parse-Vorgang Java Basics - Anfänger-Themen 17
T Exception Problem Java Basics - Anfänger-Themen 5
Z Getter/Setter NullPointer Exception Java Basics - Anfänger-Themen 6
W Nullpointer Exception bei .add(...) Java Basics - Anfänger-Themen 6
L Input/Output InputMismatch.Exception Java Basics - Anfänger-Themen 7
B Exception Liste von Liste Java Basics - Anfänger-Themen 3
D Throw Exception Java Basics - Anfänger-Themen 2
MiMa JavaDoc Exception @throws schlagen an Java Basics - Anfänger-Themen 4
J Exception in thread "main" Java Basics - Anfänger-Themen 1
B Exception richtig einbinden Java Basics - Anfänger-Themen 1
M Exception soll Werte mitgeliefert bekommen Java Basics - Anfänger-Themen 12
M Selbstdefinierte Exception Java Basics - Anfänger-Themen 5
B Exception Throwable Java Basics - Anfänger-Themen 11
M Erste Schritte Start Methode - Exception Java Basics - Anfänger-Themen 1
F Operatoren Wieso fliegt hier eine NullPointer Exception :( Java Basics - Anfänger-Themen 3
F nullpointer exception - arrayerstellung Java Basics - Anfänger-Themen 4
K Iterator-Interface implementieren mit Exception Handlung Java Basics - Anfänger-Themen 1
H Erste Schritte Exception: 0 Java Basics - Anfänger-Themen 2
A Exception vs. Testklasse (Programm testen) Java Basics - Anfänger-Themen 2
L Fehler: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException Java Basics - Anfänger-Themen 4
K Exception nur im "Debug"-Modus und jedem 3.-5. mal Ausführen Java Basics - Anfänger-Themen 3
S Java memory fehler: Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap spa Java Basics - Anfänger-Themen 5
L [JFrame] Exception - woher? Java Basics - Anfänger-Themen 8
N Threads Exception in thread "main"... Feher bei dem Versuch ein Radius zu berechnen Java Basics - Anfänger-Themen 4
R "Missbrauch" von Exception zum Programmfluss Java Basics - Anfänger-Themen 1
U Exception: OutOfMemoryError Java Basics - Anfänger-Themen 11
A Int Eingabe: String mit Exception abfangen. Aber wie? Java Basics - Anfänger-Themen 3
A Code läuft nicht, Fehlermeldung Exception in thread "main" java.lang.Error: Unresolved compilation " Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben