2015-03-12 4 views
1

Мое приложение использовало меню SidePanel в качестве навигации, и когда я показываю новую форму или открываю панель боковой панели, приложение занимает больше памяти. Возможно, это зависело от использования некоторой обработки изображений (для маскирования изображения для круга) в SideBar и многого использования класса URLImage для загрузки изображений. Но, скорее всего, из-за того, что я не освободил память предыдущей формы.Out Of Memory in Codename One

Как я могу освободить эту память?

Кодекс меняющихся форм:

public void showForm(FormBuilder form) { 
    if (current == null || 
     (! form.getForm().getTitle().equals(current.getTitle())) 
    ) { 
     current = form.getForm(); 
     if (!(form instanceof splash)) { 
      try { 
       sideMenu.addMenu(current); 
      } catch (IOException ex) { 

      } 
     } 
     current.show(); 
    } 
} 

недействительным sideMenu.addMenu (форма форма); - Статическая функция для добавления меню SideBar в форму.

ответ

1

Предыдущие формы «должны» быть GC'd. Однако, если у вас есть ссылка на один элемент в предыдущей форме, вся форма и весь ее контент будут сохранены. Это связано с тем, что каждый компонент имеет ссылку на своего родителя вплоть до родительской формы.

Вы можете использовать инструменты, такие как профилировщик памяти NetBeans, а также наш инструмент performance profiler в NetBeans для отслеживания использования памяти. Маскировка изображений немного дороже, но если вы использовали встроенную в URLImage, все издержки памяти GC'd, поэтому это не должно быть проблемой.

+0

У этого инструмента много проблем. Если я вызываю Performance или Network monitors - окно эмуляции моего приложения может быть не кликабельным. Или наоборот - эмулятор работает нормально, но монитор не работает с кликом. Однако монитор производительности показал мне это переполнение памяти и ничего другого, что я мог понять. – ftp27

+0

Окно не должно блокировать способность щелчка, оно всегда сверху, но не модально. На какой OS/Java-версии вы испытываете это? –

+0

Linux 3.13.0-45-generiC# 74-Ubuntu SMP Tue Jan 13 19:36:28 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux – ftp27