Размер байта в памяти - Java - PullRequest
50 голосов
/ 23 октября 2008

Я слышал неоднозначное мнение об объеме памяти, занимаемой байтом в Java-программе.

Я знаю, что вы можете хранить не более +127 в байте Java, а в документации говорится, что байт только 8 бит, но здесь Мне сказали, что это на самом деле занимает тот же объем памяти, что и int, и, следовательно, является просто типом, который помогает в понимании кода, а не в эффективности.

Может кто-нибудь прояснить это, и будет ли это проблемой, специфичной для реализации?

Ответы [ 13 ]

0 голосов
/ 04 августа 2011

Похоже, что ответ, скорее всего, будет зависеть от вашей версии JVM, а также от архитектуры вашего процессора. Линейка процессоров Intel эффективно обрабатывает байты (благодаря 8-битной истории процессоров). Некоторые чипы RISC требуют выравнивания слов (4 байта) для многих операций. А выделение памяти может быть различным для переменных в стеке, полей в классе и в массиве.

0 голосов
/ 28 октября 2008

Прочитав вышеупомянутые комментарии, кажется, что мой вывод станет неожиданностью для многих (это также удивляет меня), поэтому стоит повторить:

  • Старый размер (int) == размер (байт) для переменных не более , по крайней мере в Sun Java 6.

Вместо этого размер (байт) == 1 байт (!!)

0 голосов
/ 28 октября 2008

См. Мои MonitoringTools на моем сайте (www.csd.uoc.gr/~andreou)

class X {
   byte b1, b2, b3...;
}

long memoryUsed = MemoryMeasurer.measure(new X());

(Может использоваться и для более сложных объектов / графов объектов)

В версии 1.6 JDK от Sun кажется, что байт действительно занимает один байт (в более старых версиях, интбайт с точки зрения памяти) Но обратите внимание, что даже в более старых версиях byte [] также был упакован в один байт на запись.

В любом случае, дело в том, что нет необходимости в сложных тестах, подобных описанным выше Джоном Скитом, которые дают только оценки. Мы можем напрямую измерить размер объекта!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...