Как известно, переменная ссылочного типа хранит адрес памяти, в котором располагается объект.
Так вот вопрос - какой размер занимает в памяти эта самая ссылка? И какой её тип в итоге - int?
Чисто рассуждение:
Очень грубо говоря - ее размер зависит от максимально адресуемой ячейки памяти. Для 32-битных систем - 32 бита (т.е. 4 байта, т.е. int). Для 64-битных - соответственно 64 бита (но могут быть нюансы, как я думаю - ведь не вся память доступна приложению).
+ вполне могут быть накладные расходы на какую то служебную инфу.
Нужен конкретный размер в любой конкретной ситуации. Алгоритм может есть, который можно проверить? Плагин?
Смысл в чем - какие операции потребуют меньше затрат ресурсов компьютера - работа с примитивным типом int или с сылочным типом?
Jake Taylor, на сколько я помню, средствами языка это проверить нельзя. Разве что цеплять агент и хакерить с помощью инструментации. Если вы интересуетесь оптимизациями такого уровня, то явно выбрали не тот язык для свои задач.
Сергей Горностаев, вопрос возник исходя из того, что принцип работы HashMap реализован в хранении ссылок на объекты и утверждается, что в случае вставки в середину объекта (а конкретнее - ссылки на объект) в середину массива, эта операция происходит быстрее, чем в ArrayList.
Jake Taylor, это вообще никак не связано со ссылками, дело в структуре данных и обрабатывающих её алгоритмах. ArrayList тоже так-то ссылки на объекты хранит.
Сергей Горностаев, хранит ссылки на объекты, но алгорит заключается в переносе (копировании) всех n+1 справа элементов. Вот и вопрос, что трудозатратнее всё такие, копирование всех ссылок в ArrayList или копирование всех ссылок в HashMap? Одинаково получается. Абсурд.
Jake Taylor, так HashMap не копирует ничего, ему не надо сдвигаться элементы. При добавлении элемента, он просто добавляется в бакет, соответствующий хэшу. Вам стоит почитать например это.