Java Bilderverwaltung - Image Fetcher Problem

Status
Nicht offen für weitere Antworten.

toscman

Mitglied
Hallo,

hoffe, hier kann mir jemand weiter helfen, da ich bisher mit dem im Netz möglicherweise passenden Lösungsversuchen nicht wirklich weiter gekommen bin.
Zu meinem Problem:

Ich progge gerade eine Bildverwaltung. Mein Obekt Bild besitzt dabei jeweils das entsprechende JLabel mit dem Bild (ca 3-5mb) und dem Thumb (ca 10kb). Diese werden aber erst erzeugt, sobald sie benötigt werden. Die Images liegen auf einem Server und werden so über ne URL aufgerufen.
Ich erstelle ein JPanel und packe da über ein modifiziertes FlowLayout (welches auch noch nicht sauber funzt, aber das wird noch) die entsprechenden JLabel (also die Thumbs) drauf. Das ganze funzt auch eigentlich, aber dasProb is folgendes. Ab einer gewissen Anzahl, schätze mal so circa 500 oder 600 kommt folgende Fehlermeldung:

Exception in thread "Image Fetcher 2" java.lang.OutOfMemoryError: Java heap space

Ich habe jetzt schon verschiedene Ideen gehabt, die aber bisher nicht wirklich umzusetzen waren oder einfach nichts gebracht haben.

Ich bräuchte jetzt eigentlich entweder ne gute Idee, wieso diese Fehlermeldung kommt und wie ich sie loswerde (Hab es mit der erweiterung vom Speicher schon versucht) oder ne echt gute Idee, wie ich das Problem umgehen kann.

Eine Idee, war das partielle Einlesen von den Thumbs (also sagen wir mal in 100er Schritten) mittels Threads, da man ja nicht alle Thumbs auf einmal sehen wird. Aber, letztendlich komme ich ja auch so wieder auf die komplette Speichergröße.

Vielleicht weiß ja (hoffentlich) einer hier ne Lösung. Wahrscheinlich hab ich nen Brett vorm Kopf, naja!

Toscman ;-)
 
Hi,

danke ers mal für die Antwort. Das mit der SoftReference hört sich interessant an, zumindest für die großen Bilder später.
Die Thumbs sollen schon alle auf einem Panel dargestellt werden. Dieses Panel ist in einem ScrollPane. Gibt es da ne Möglichkeit, die zur Zeit sichbaren JLabels oder Panels abzufragen?
Wenns so wäre, hätte ich ja leichtes Spiel. ;-)

Toscman
 
Habs soweit hinbekommen, dass ich die Abmaße auslesen kann.

JViewport jview = this.getViewport();
Point jpoint = jview.getViewPosition();
Rectangle jrec = jview.getViewRect();

Somit bekomme die Eckdaten und kann mit den Positionsangaben der JLabels auf dem Panel entsprechend Platzhalter setzen oder die Thumbs ins JLabel laden.

Das Ganze ist irgendwie komplizierter als ich gedacht habe (ist es ja eigentlich immer).
Jetzt mach ich erst mal was anderes, da das Projekt eigentlich so ne Art Entspannung für mich sein sollte und ich mich anfange zu ärgern ,-)

Danke ersteinmal für die Hilfen, werde mich sicher nochmal hier melden. ;-)

Toscman
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben