Для хранения одного примитива byte в ArrayList потребуется:
Объект Byte: Поскольку ArrayList хранит объекты, примитив byte будет запакован в оболочку — объект java.lang.Byte. Размер объекта в Java зависит от JVM, но обычно включает:
byte (1 байт).Byte (заголовок + 1 байт) будет дополнен до ближайшего кратного 8.Примерно, размер объекта Byte может составлять около 16 байт (12 байт заголовок + 1 байт значение + 3 байта выравнивание до 16).
Элемент массива ArrayList: ArrayList использует внутренний массив Object[] для хранения элементов. В этом массиве хранится ссылка на объект Byte. Размер ссылки зависит от JVM: 4 байта (32-битная JVM или 64-битная с сжатыми указателями) или 8 байт (64-битная JVM без сжатых указателей).
Итого, общее количество памяти для хранения одного примитива byte в ArrayList будет суммой памяти, занимаемой объектом Byte, и памяти, занимаемой ссылкой на этот объект во внутреннем массиве ArrayList.
На 64-битной JVM с сжатыми указателями это примерно:
Byte: ~16 байтОбщий размер: ~16 байт (объект Byte) + 4 байта (ссылка) = ~20 байт.
Следует учитывать, что это оценка. Точный размер может варьироваться в зависимости от конкретной реализации JVM. Также не учитываются накладные расходы самого объекта ArrayList (которые распределяются на все элементы) и внутреннего массива.
Для эффективного хранения примитивов byte с меньшими накладными расходами лучше использовать специализированные коллекции, такие как byte[] или библиотеки вроде Trove (TByteArrayList).