Требования к памяти для ссылки на объект в 64-битной JVM - PullRequest
17 голосов
/ 17 сентября 2010

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

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

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

Ответы [ 2 ]

16 голосов
/ 17 сентября 2010

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

6 голосов
/ 17 сентября 2010

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

...