Obrazy JavaME - obrazy LWUIT pochłaniają całą pamięć
Piszę MIDlet używając LWUIT, a zdjęcia wydają się pochłaniać niesamowitą ilość pamięci. Wszystkie obrazy, których używam, są PNG i są zapakowane w plik JAR. Ładuję je za pomocą standardowej metody Image.createImage (URL). Aplikacja ma wiele formularzy, a każda z nich ma kilka etykiet i przycisków, jednak jestem pewien, że tylko aktywna forma jest przechowywana w pamięci (wiem, że nie jest bardzo godna zaufania, ale wydaje się, że Runtime.freeMemory () potwierdza to).
Aplikacja działa dobrze w rozdzielczości 240x320, ale przeniesienie jej do 480x640 i użycie odpowiednio większych obrazów dla interfejsu użytkownika zaczęło powodować błędy pamięci. Aplikacja pobiera między innymi zdalne obrazy. Aplikacja wydaje się działać dobrze, dopóki nie dotrze do tego punktu. Po pobraniu kilku PNG i powrocie do menu głównego pojawia się błąd braku pamięci. Naturalnie spojrzałem na ilość pamięci używanej przez główne menu i było to dość szokujące. To tylko dwie etykiety z obrazami i czterema przyciskami. Każdy przycisk ma trzy obrazy używane dla style.setIcon, setPressedIcon i setRolloverIcon. Obrazy mają rozmiar od 15 do 25 KB, ale usuwają dwa z trzech obrazów używanych dla każdego przycisku (więc łącznie 8 obrazów), Runtime.freeMemory () wykazało oszałamiające zmniejszenie użycia pamięci o 1 MB.
Sposób, w jaki to widzę, albo mam mnóstwo wycieków pamięci (co, jak sądzę, nie robię, ale przecieki pamięci nie są dokładnie znane z łatwego śledzenia), robię coś strasznie złego w obsłudze obrazów lub naprawdę nie ma problemu i po prostu muszę zmniejszyć skalę.
Gdyby ktoś miał jakąś wiedzę do zaoferowania, byłbym bardzo wdzięczny.