Подтвердить что ты не робот

Требования к памяти для ссылки на объект на 64-разрядной JVM

Ссылка на объект на 32-разрядной JVM (по крайней мере, на Hotspot) занимает 4 байта.

Нужно ли 8-битной Hotspot JVM 8 байтов? Или происходит какое-то умное сжатие? Если нет, для каждого Object[] потребуется вдвое больше кучи памяти, что я как-то думаю (надеюсь, ожидаю) не так.

Обновление/дополнительный вопрос: действительно ли это имеет значение, или это незначительное увеличение, поскольку большинство ссылок указывают на объекты, которые намного больше, чем несколько байтов (тогда как можно утверждать, что эти объекты в свою очередь в основном состоят из ссылок на другие объекты)?

4b9b3361

Ответ 1

В 64-битной системе ссылки на объекты обычно 8-байтовые. Но в недавних JVM от Sun/Oracle вы можете включить Compressed Oops, которые уменьшают размер ссылки до 4 байтов за счет меньшего ограничения на кучу размер.

Ответ 2

Согласно Производительность платформы Java, он не определен строго, но обычно 8 байтов в 64-разрядной системе:

Размер ссылки не определен, но обычно это 4 байта в 32-битной системе и 8 байтов в 64-битной системе.