Каков фактический размер данных массива байтов / целых в Java - PullRequest
0 голосов
/ 13 июня 2019

мой вопрос очень простой, но я все еще изо всех сил пытаюсь понять его:

Моя задача - отправить пакет UDP (Java), который содержит 512 байт случайных данных. Так что это равно 4096 бит. Если я отправлю байтовый массив (заполненный "0") размером 4096, будет ли он равен 512 байтов?

Большое спасибо:)

1 Ответ

1 голос
/ 13 июня 2019

Я нашел интересную статью здесь: dzone.com

Вот важные части:

Как рассчитать использование памяти Java-объектом ?: Очень упрощенное объяснение того, как можно рассчитать память любого Java-объекта. Например, допустим, вы хотите вычислить память Java-объекта, который содержит две переменные типа int, одну логическую переменную, один объект Long и ссылку на другие объекты. Память окажется такой:

  • 8 байт для заголовка объекта

  • 2 x 4 = 8 байтов для двух переменных типа int

  • 1 байт для логической переменной

  • 8 байт (ссылка на объект) + 8 байт для длинного типа данных = 16 байт для длинного объекта
  • 4 байта для ссылки на какой-либо другой объект

Общий размер вышеупомянутого объекта составит 8 + 8 + 1 + 16 + 4 = 37 байт + 3 байта (для заполнения) = 40 байт.

Как рассчитать использование памяти для массива Java ?: На странице представлены примеры того, как рассчитать размер объекта массива Java.

Например, допустим, массив Java, состоящий из 20 объектов Integer. Ниже приведена подробная информация о размере: 12 байтов для объекта заголовка массива (8 байтов для заголовка и 4 байта для хранения длины массива) ==> 20 x 16 байтов = 320 байтов для целочисленных объектов.

...