JavaME-LWUIT-Images beanspruchen den gesamten Speicher
Ich schreibe ein MIDlet mit LWUIT und Bilder scheinen unglaublich viel Speicherplatz in Anspruch zu nehmen. Alle Bilder, die ich verwende, sind PNGs und sind in die JAR-Datei gepackt. Ich lade sie mit der Standardmethode Image.createImage (URL). Die Anwendung hat eine Reihe von Formularen und jedes hat ein paar Beschriftungen und Schaltflächen. Ich bin mir jedoch ziemlich sicher, dass nur das aktive Formular im Speicher bleibt (ich weiß, dass es nicht sehr vertrauenswürdig ist, aber Runtime.freeMemory () scheint dies zu bestätigen diese).
Die Anwendung hat gut mit einer Auflösung von 240 x 320 gearbeitet, aber wenn sie auf 480 x 640 verschoben und entsprechend größere Bilder für die Benutzeroberfläche verwendet wurden, traten Fehler aufgrund von Speichermangel auf. Die Anwendung lädt unter anderem Remote-Images herunter. Die Anwendung scheint gut zu funktionieren, bis es zu diesem Punkt kommt. Nachdem Sie einige PNGs heruntergeladen und zum Hauptmenü zurückgekehrt sind, ist ein Speicherfehler aufgetreten. Natürlich habe ich mir die Menge an Speicher angesehen, die das Hauptmenü benötigt, und es war ziemlich schockierend. Es sind nur zwei Etiketten mit Bildern und vier Schaltflächen. Jede Schaltfläche enthält drei Bilder, die für style.setIcon, setPressedIcon und setRolloverIcon verwendet werden. Die Größe der Bilder reicht von 15 bis 25 KB, aber ohne zwei der drei Bilder, die für jede Schaltfläche verwendet wurden (also insgesamt 8 Bilder), konnte Runtime.freeMemory () eine erstaunliche Verringerung der Speichernutzung um 1 MB verzeichnen.
So wie ich das sehe, habe ich entweder eine ganze Menge Speicherlecks (was ich glaube nicht, aber Speicherlecks sind nicht so leicht aufzuspüren), ich mache etwas schreckliches falsch mit der Bildverarbeitung oder Es ist wirklich kein Problem damit verbunden und ich muss nur verkleinern.
Wenn jemand einen Einblick zu bieten hat, würde ich ihn sehr schätzen.