Насколько велика, в байтах, примитив в штучной упаковке, такой как java.lang.Integer
или java.lang.Character
в Java?Какова стоимость хранения примитива в штучной упаковке в Java?
int
- 4 байта, обычный указатель также 4 байта (если не сжат JVM). Является ли стоимость для целого (без кеширования) таким образом 4 bytes + 4 bytes = 8 bytes
? Есть ли еще какие-либо скрытые поля в полевом объекте или дополнительные накладные расходы, связанные с объектами (т. Е. Общая стоимость объектов, о которых я не знаю?).
Я не интересуюсь проблемами кеширования. Я знаю, что целые числа в определенном диапазоне кэшируются JVM.
Можно было бы перефразировать вопрос: каков максимальный коэффициент, который нужно умножить на объем памяти, используемый для значений в штучной упаковке по сравнению с примитивными значениями?
EDIT: Я понимаю, что существует множество реализаций JVM. Какова типичная стоимость типичной 32-битной реализации HotSpot?
С определенной точки зрения этот вопрос невозможен, поскольку накладные расходы на примитиве в штучной упаковке не указаны в какой-либо спецификации. Он может и будет варьироваться от VM до VM и платформы к платформе. Аппаратная платформа с помеченной памятью может иметь нулевые накладные расходы. –
дубликат [В Java, что является лучшим способом определения размера объекта?] (Http://stackoverflow.com/questions/52353/in-java-what-is-the-best-way-to- определение-в-размер-о-объекта). – DwB
Я думаю, что это также может зависеть от контекста, который вы используете в штучной упаковке и любых оптимизаций, которые делает компилятор времени исполнения. –