Модераторы: javastic, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ХАРДКОДИНГ - как это делать правильно? "Свеженькая" задачка для развития мозга. 
:(
    Опции темы
AndriyTyurnikov
Дата 12.9.2006, 07:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 30.6.2006

Репутация: 1
Всего: 1



Задумался недавно над написанием препроцессора, который бы хардкодил бы изображения, музыку и прочую ерунду в статичные финальные массивы байтов (для комфортного обхода багов, связанных с утечкой памяти в Class.getResourseAsStream(String resource)).

В этой связи возникла непонятка... Хардкодить ли файлы в одном классе или раскидать из расчета 1 файл-1 класс, например (стараюсь память не загасить, если все ресурсы впишу в один файл)

Пусть имеется класс A с килобайтным 
static final byte[1024] hardcodedImage = {...}
внимание вопрос
будет ли съедать память этот массив (и если да - то с каких и до каких пор)
Выражаясь проще -  жрут ли память статик финал поля? и если да, то где, когда,  как долго и сколько?
за вменяемый ответ - неувядающая слава и восхищение потомков  smile 
PM MAIL   Вверх
W0LF
Дата 12.9.2006, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



Да, если класс загружен



--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
Daevaorn
Дата 13.9.2006, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: нет
Всего: 70



AndriyTyurnikov, 
Массивы инициализируются последовательностью команд. Что в принципе даст отрицательный эффект. Мы в своих разработках наоборот все(почти) крупные массивы грузим из ресурсных файлов. Это маленький оверхед в рантайме, зато мидлет меньше получается.
PM MAIL WWW   Вверх
AndriyTyurnikov
Дата 15.9.2006, 01:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 30.6.2006

Репутация: 1
Всего: 1



Цитата(Daevaorn @ 13.9.2006,  22:43)
Daevaorn, 
Массивы инициализируются последовательностью команд. Что в принципе даст отрицательный эффект. Мы в своих разработках наоборот все(почти) крупные массивы грузим из ресурсных файлов. Это маленький оверхед в рантайме, зато мидлет меньше получается.



Внимание вопрос - какой именно отрицательный эффект?
Грузить массивы из файлов - это оверхед в рантайме, да, но в чем выигрыш? Мидлет с зашитыми массивами весит больше чем мидлет и массивы отдельно? Если нет, то в чем смысл, в переодической очистке массивов? Опять же хранение в отдельных файлах ( и уж тем более частое к ним обращение) на рассматриваемой платформе неприемлемо.

Если никто не сталкивался с данной задачей, то может есть кто-то, пристально изучавший поведение класслоадеров и сборщиков мусора? Примеры кода are welcome.
PM MAIL   Вверх
Daevaorn
Дата 15.9.2006, 06:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: нет
Всего: 70



Цитата(AndriyTyurnikov @  15.9.2006,  02:42 Найти цитируемый пост)
Внимание вопрос - какой именно отрицательный эффект?

Весить будет больше, чем в отдельном файле

Цитата(AndriyTyurnikov @  15.9.2006,  02:42 Найти цитируемый пост)
Грузить массивы из файлов - это оверхед в рантайме, да, но в чем выигрыш?

Размер jar архива

Цитата(AndriyTyurnikov @  15.9.2006,  02:42 Найти цитируемый пост)
Мидлет с зашитыми массивами весит больше чем мидлет и массивы отдельно?

Да

Цитата(AndriyTyurnikov @  15.9.2006,  02:42 Найти цитируемый пост)
Опять же хранение в отдельных файлах ( и уж тем более частое к ним обращение) на рассматриваемой платформе неприемлемо.

Либо отдельный, либо один пак ресурсов, где много всяких данных. Тоже экономия на размере джарника, т.к. лишние файлы - лишние мета данные в архиве. Частое обращение - это издержки дизайна, а его можно исправить. Да и потом, загрузил один раз и пользуйся (в игре: пока идет один уровень и ещё какое-то продолжительное состояние), потом выгрузил и забыл.
PM MAIL WWW   Вверх
Nobody
Дата 15.9.2006, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 25.8.2003
Где: Россия, Москва

Репутация: нет
Всего: 16



А ещё круче динамически генерировать этот самый массив smile Так всякие демосцены работают, генерируют текстуры.


--------------------
Алгоритм помещения вопросов на форуме
Выражаем спасибо вот ТАК
Use the Source, Luke!
PM MAIL WWW ICQ   Вверх
AndriyTyurnikov
Дата 19.9.2006, 03:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 30.6.2006

Репутация: 1
Всего: 1



Добавление в класс килобайтного массива дало дополнительных 6 килобайт в скомпиленом классе, я подозреваю, что они неплохо сжимаюццо в джарнике, но факт остается фактом.

Мораль у басни такова... хардкодинг на рассмотренных платформах целесообразнее использовать лишь для зашития немедийных ресурсов (уровней игр, например), а медийные читать через Nokia API. 
Занавес.

Всем спасибо за участие.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0480 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.