Если рассматривать вопрос буквально, то в большинстве JVM все ссылки на 32-битные JVM занимают 4 байта, одна 64-битная JVM, ссылка занимает 8 байтов, если не используется -XX: + UseCompressedOops, в этом случае требуется 4 -bytes.
Я предполагаю, что вы спрашиваете, как определить, сколько места занимает Объект. Вы можете использовать Инструментарий (не простой вопрос), но это даст вам небольшую глубину. Java склонна разбивать многие объекты на что-то, что в C ++ может быть единой структурой, поэтому это не так полезно.
Однако, если у вас есть проблемы с памятью, я предлагаю вам профилировщик памяти. Это даст вам возможность использовать объекты в мелком и глубоком космосе и даст представление о всей системе. Это часто более полезно, поскольку вы можете начать с самых крупных потребителей и оптимизировать их, даже если вы разрабатываете Java в течение десяти лет +, вы будете только догадываться, где лучше всего оптимизировать, если у вас нет твердых данных.
Еще один способ получить размер объекта, если вы не хотите использовать профилировщик, - это выделить большой массив и посмотреть, сколько памяти используется. Вы должны делать это много раз, чтобы получить хорошее представление о среднем размере. является. Я бы установил молодое пространство очень высоко, чтобы ГК не запутали ваши результаты, например. -XX:NewSize=1g