Показать сообщение отдельно
Старый 15.12.2014, 12:26   #1
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Смесь: Неочевидное + Оптимизация

Всем привет!

Я сейчас занимаюсь оптимизацией приложения: j2me-клиент для мобильной соц. сети Galaxy.
(можете загуглить, не буду рекламировать)

Решил создать эту тему, чтобы делиться наблюдениями, слушать советы и всё такое прочее.

Зачем вообще всё это:
В обычных мобильниках (не смартфонах) для джава-проги доступно около 2 мб оперативной памяти.
Как раз-таки памяти мне и не хватает для юзерского комфорта.

При старте приложения - главный экран - съедается порядка 1 мб.
Остаётся ещё 1 до ошибки "Out of memory".

Что есть в приложении:
* непрерывный коннект к чат-серверу по сокету
* самодельный браузер, псевдо-хтмл, много картинок - грузятся по хттп.
* планета с персонажами (костюмы, одежда), объектами, фоном/интерьером
* чатик
Нажмите на изображение для увеличения
Название: g1.png
Просмотров: 1368
Размер:	39.5 Кб
ID:	21254 Нажмите на изображение для увеличения
Название: g2.png
Просмотров: 1301
Размер:	113.2 Кб
ID:	21255 Нажмите на изображение для увеличения
Название: g3.png
Просмотров: 1242
Размер:	12.0 Кб
ID:	21256

Масштабы проекта:
* 25 packages
* 177 классов и интерфейсов суммарно
Например, в пакете browser 50 классов/интерфейсов.

Что заметно жрёт оперативку:
* создание новых объектов, в частности строк (парсинг страниц, получение команд из сокета)
* картинки (браузер и планета)

Я юзаю ручной вызов GC (сборщик мусора), и по возможности стараюсь перехватить переполнение памяти через
catch(OutOfMemoryError out) {}
но не всегда срабатывает, прога крэшится и закрывается.

Т.к. j2me - это младшая, но родная, сестра "обычной" java, то тема может быть полезна широкому кругу читателей.

Далее отдельными постами рассказ.
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо Жека за это полезное сообщение:
Igor (16.12.2014), pax (16.12.2014), St_AnGer (15.12.2014)