![]() |
|
Модераторы: javastic, AntonSaburov |
![]()
|
|
| AndriyTyurnikov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 30.6.2006 Репутация: 1 Всего: 1 |
Задумался недавно над написанием препроцессора, который бы хардкодил бы изображения, музыку и прочую ерунду в статичные финальные массивы байтов (для комфортного обхода багов, связанных с утечкой памяти в Class.getResourseAsStream(String resource)).
В этой связи возникла непонятка... Хардкодить ли файлы в одном классе или раскидать из расчета 1 файл-1 класс, например (стараюсь память не загасить, если все ресурсы впишу в один файл) Пусть имеется класс A с килобайтным static final byte[1024] hardcodedImage = {...} внимание вопрос будет ли съедать память этот массив (и если да - то с каких и до каких пор) Выражаясь проще - жрут ли память статик финал поля? и если да, то где, когда, как долго и сколько? за вменяемый ответ - неувядающая слава и восхищение потомков |
|||
|
||||
| W0LF |
|
|||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
Да, если класс загружен
-------------------- iOS developer |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: нет Всего: 70 |
AndriyTyurnikov,
Массивы инициализируются последовательностью команд. Что в принципе даст отрицательный эффект. Мы в своих разработках наоборот все(почти) крупные массивы грузим из ресурсных файлов. Это маленький оверхед в рантайме, зато мидлет меньше получается. |
|||
|
||||
| AndriyTyurnikov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 30.6.2006 Репутация: 1 Всего: 1 |
Внимание вопрос - какой именно отрицательный эффект? Грузить массивы из файлов - это оверхед в рантайме, да, но в чем выигрыш? Мидлет с зашитыми массивами весит больше чем мидлет и массивы отдельно? Если нет, то в чем смысл, в переодической очистке массивов? Опять же хранение в отдельных файлах ( и уж тем более частое к ним обращение) на рассматриваемой платформе неприемлемо. Если никто не сталкивался с данной задачей, то может есть кто-то, пристально изучавший поведение класслоадеров и сборщиков мусора? Примеры кода are welcome. |
|||
|
||||
| Daevaorn |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: нет Всего: 70 |
Весить будет больше, чем в отдельном файле
Размер jar архива
Да
Либо отдельный, либо один пак ресурсов, где много всяких данных. Тоже экономия на размере джарника, т.к. лишние файлы - лишние мета данные в архиве. Частое обращение - это издержки дизайна, а его можно исправить. Да и потом, загрузил один раз и пользуйся (в игре: пока идет один уровень и ещё какое-то продолжительное состояние), потом выгрузил и забыл. |
||||||
|
|||||||
| Nobody |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 25.8.2003 Где: Россия, Москва Репутация: нет Всего: 16 |
А ещё круче динамически генерировать этот самый массив
-------------------- |
|||
|
||||
| AndriyTyurnikov |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 30.6.2006 Репутация: 1 Всего: 1 |
Добавление в класс килобайтного массива дало дополнительных 6 килобайт в скомпиленом классе, я подозреваю, что они неплохо сжимаюццо в джарнике, но факт остается фактом.
Мораль у басни такова... хардкодинг на рассмотренных платформах целесообразнее использовать лишь для зашития немедийных ресурсов (уровней игр, например), а медийные читать через Nokia API. Занавес. Всем спасибо за участие. |
|||
|
||||
![]()
|
FAQ раздела лежит здесь! |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java ME (J2ME) | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |