JavaME - образы LWUIT пожирают всю память
Я пишу мидлет, используя LWUIT, и изображения, кажется, поглощают невероятное количество памяти. Все изображения, которые я использую, являются PNG и упакованы в файл JAR. Я загружаю их, используя стандартный метод Image.createImage (URL). Приложение имеет несколько форм, и каждая имеет несколько ярлыков и кнопок, однако я вполне уверен, что в памяти хранится только активная форма (я знаю, что она не очень надежна, но Runtime.freeMemory (), кажется, подтверждает это).
Приложение хорошо работало в разрешении 240x320, но перемещение его на 480x640 и использование соответственно больших изображений для пользовательского интерфейса стало причиной появления ошибок нехватки памяти. Помимо всего прочего, приложение загружает удаленные образы. Приложение, кажется, работает нормально, пока не дойдет до этой точки. После загрузки пары PNG и возврата в главное меню возникает ошибка нехватки памяти. Естественно, я посмотрел на объем памяти, который использует главное меню, и это было довольно шокирующе. Это просто две метки с изображениями и четырьмя кнопками. Каждая кнопка имеет три изображения, используемые для style.setIcon, setPressedIcon и setRolloverIcon. Размеры изображений варьируются от 15 до 25 КБ, но при удалении двух из трех изображений, используемых для каждой кнопки (всего 8 изображений), Runtime.freeMemory () показала ошеломительное уменьшение использования памяти на 1 МБ.
С моей точки зрения, у меня либо много утечек памяти (что я не думаю, но утечек памяти точно не легко отследить), я делаю что-то ужасно неправильно с обработкой изображений или Там действительно нет никаких проблем, и мне просто нужно уменьшить.
Если у кого-то есть что-то, что я могу предложить, я был бы очень признателен.