Хардкодінг - як це робити правильно

хардкодінг

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

У цьому виникла незрозуміла. Хардкодувати файли в одному класі або розкидати з розрахунку 1 файл-1 клас, наприклад (намагаюся пам'ять не загасити, якщо всі ресурси впишу в один файл)

Нехай є клас A з кілобайтним static final byte[1024] hardcodedImage = увага питання чи з'їдатиме пам'ять цей масив (і якщо так - то з яких і доки) Висловлюючись простіше - чи жеруть пам'ять статик фіналу поля? і якщо так, то де, коли, як довго і скільки? за осудну відповідь - нев'януча слава і захоплення нащадків :hehe

робити

робити

правильно

Масиви ініціалізуються послідовністю команд. Що, в принципі, дасть негативний ефект. Ми у своїх розробках навпаки всі великі масиви вантажимо з ресурсних файлів. Це маленький зверхед у рантаймі, зате мідлет менше виходить.

Увага питання – який саме негативний ефект? Мідлет із зашитими масивами важить більше ніж мідлет та масиви окремо? Якщо ні, то в чому сенс у переодичному очищенні масивів? Знову ж таки зберігання в окремих файлах (і вже тим більше часте до них звернення) на платформі, що розглядається, неприйнятно.

Якщо ніхто не стикався з даним завданням, то може є хтось, який уважно вивчав поведінку класлоадерів і збирачів сміття? Приклади коду є welcome.