[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-collections-otsenite-kolichestvo-pamyati-na-khranenie-odnogo-primitiva-tipa-byte-v-arraylist":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":17,"progress":18,"seo":19},456,"otsenite-kolichestvo-pamyati-na-khranenie-odnogo-primitiva-tipa-byte-v-arraylist",12,"collections","Collections","📚","Оцените количество памяти на хранение одного примитива типа byte в ArrayList","ArrayList хранит ссылки в массиве, а примитив `byte` упаковывается в объект `Byte`.\n\nДля x32 JVM:\n\n- Ссылка в массиве: 4 байта\n- Byte: заголовок 8 байт + 1 байт данных = 16 байт (с padding)\n- Итого: 4 + 16 = 20 байт\n\nДля x64 JVM:\n\n- Ссылка в массиве: 8 байт (4 байта с CompressedOops)\n- Byte: заголовок 16 байт + 1 байт данных = 24 байта (с padding)\n- Итого: 8 + 24 = 32 байта (или 4 + 24 = 28 байт с CompressedOops)\n\nКак и в LinkedList, значения от -128 до 127 используют кэшированные экземпляры Byte, поэтому накладные расходы на объект Byte не возникают для каждого элемента. Тем не менее, ArrayList все равно значительно экономнее LinkedList по памяти, т.к. не создает объекты Node.\n\n> **На собеседовании:** сравните с LinkedList: ArrayList расходует ~20 байт (x32) vs ~40 байт у LinkedList. Разница в два раза показывает, почему ArrayList предпочтительнее по памяти.","","middle",[15,16],"memory","jcf",[],null,{"title":20,"description":21,"ogTitle":22,"ogDescription":23,"keywords":24,"schemaAnswer":35,"featuredSnippetReady":36},"Память на byte в LinkedList — 40-64 байта — Gymterview","x32: Node 24 + Byte 16 = 40 байт. x64: Node 40 + Byte 24 = 64 байта. Autoboxing, кэш Byte -128..127, заголовок объекта, padding.","Расход памяти на byte в LinkedList — Gymterview","40 байт (x32) или 64 байта (x64) на один byte: Node + Byte wrapper. Autoboxing и кэш Byte.",[25,26,27,28,29,30,31,32,33,34],"LinkedList","byte","память","autoboxing","Byte","Node","padding","заголовок объекта","Java","собеседование","x32: Node (24 байта) + Byte (16 байт) = 40 байт. x64: Node (40 байт) + Byte (24 байта) = 64 байта. Примитив byte упаковывается в Byte (autoboxing). Значения -128..127 кэшируются.",true]