Ich habe hier ein Programm geschrieben, mit dem sich Objekte zur Laufzeit instanzieren lassen, denen ein paar Eigenschaften und jeweils ein Bild zugeordnet werden, welche dann in Labels und Panels verpackt auf einem Hauptpanel bzw. im Hauptfenster angezeigt werden.
Die instanzierten Objekte lassen sich in eine Datei speichern, wobei alle Eigenschaften außer das zugeordnete Bild (ist als transient deklariert) mitgespeichert werden. Die Bilder werden dann bei der Deserialisierung allesamt neu geladen und angezeigt.
Alles funktioniert genau so wie es soll.., aber nur solange ich nur wenige Objekte instanziert habe.
Bei ca. 30 - 40 Objekten fängt das Programm an zu hängen. Wenn ich das Fenster skaliere und nicht klein genug mache, dann bleibt ein schwarzer Rand und das Programm hängt und nimmt keine Eingaben mehr auf. Skaliere ich das Fenster kleiner, geht wieder alles. Die Größe bei der alles geht nimmt mit steigender Anzahl an instanzierten Objekten ab. Wenn ich z.B. ein neues Objekt instanziere und schon zu viele vorhanden sind, kann ich kein Bild mehr laden/anzeigen. Skaliere ich das Fenster ein Stück kleiner, kann ich wieder ein paar mehr Bilder laden/anzeigen.
Zudem funktioniert bei zu vielen Objekten die Serialisierung nicht mehr richtig.
Habe versucht 50 Objekte zu serialisieren und wieder zu deserialisieren, dabei kam eine EOF Exception heraus..
Wenn ich jedoch die 50 Objekte serialisiere ohne vorher die Bilder zu laden, dann funktioniert auch die Deserialisierung; aber die Bilder sollten doch damit nichts zu tun haben, werden ja nicht mit serialisiert, da sie als transient deklariert sind?
Außerdem haben die bis dahin geladenen 50 Bilder zusammen weniger als 6MB.. das sollte doch so oder so zu schaffen sein?
Habe mich bis jetzt noch kein bisschen mit Speicher-Management beschäftigt und davon überhaupt keine Ahnung, da das Programm nicht sehr komplex ist und auch nicht wird.. gibts vielleicht eine Speicher-Grenze, die man erhöhen kann? Und wie bekomme ich das Bilder-Laden speicherfreundlich hin (lade mit ImageIO.read(File))?
Welche Code-Ausschnitte ich jetzt noch posten soll weis ich auch nicht ganz..
Zur Serialisierung vielleicht noch was: Habe alle Objekte in einem Array, und speichere alles in eine Datei.
Naja, hilfe ^^
Die instanzierten Objekte lassen sich in eine Datei speichern, wobei alle Eigenschaften außer das zugeordnete Bild (ist als transient deklariert) mitgespeichert werden. Die Bilder werden dann bei der Deserialisierung allesamt neu geladen und angezeigt.
Alles funktioniert genau so wie es soll.., aber nur solange ich nur wenige Objekte instanziert habe.
Bei ca. 30 - 40 Objekten fängt das Programm an zu hängen. Wenn ich das Fenster skaliere und nicht klein genug mache, dann bleibt ein schwarzer Rand und das Programm hängt und nimmt keine Eingaben mehr auf. Skaliere ich das Fenster kleiner, geht wieder alles. Die Größe bei der alles geht nimmt mit steigender Anzahl an instanzierten Objekten ab. Wenn ich z.B. ein neues Objekt instanziere und schon zu viele vorhanden sind, kann ich kein Bild mehr laden/anzeigen. Skaliere ich das Fenster ein Stück kleiner, kann ich wieder ein paar mehr Bilder laden/anzeigen.
Zudem funktioniert bei zu vielen Objekten die Serialisierung nicht mehr richtig.
Habe versucht 50 Objekte zu serialisieren und wieder zu deserialisieren, dabei kam eine EOF Exception heraus..
Wenn ich jedoch die 50 Objekte serialisiere ohne vorher die Bilder zu laden, dann funktioniert auch die Deserialisierung; aber die Bilder sollten doch damit nichts zu tun haben, werden ja nicht mit serialisiert, da sie als transient deklariert sind?
Außerdem haben die bis dahin geladenen 50 Bilder zusammen weniger als 6MB.. das sollte doch so oder so zu schaffen sein?
Habe mich bis jetzt noch kein bisschen mit Speicher-Management beschäftigt und davon überhaupt keine Ahnung, da das Programm nicht sehr komplex ist und auch nicht wird.. gibts vielleicht eine Speicher-Grenze, die man erhöhen kann? Und wie bekomme ich das Bilder-Laden speicherfreundlich hin (lade mit ImageIO.read(File))?
Welche Code-Ausschnitte ich jetzt noch posten soll weis ich auch nicht ganz..
Zur Serialisierung vielleicht noch was: Habe alle Objekte in einem Array, und speichere alles in eine Datei.
Naja, hilfe ^^