Не знал про @Contended, спасибо. Ну там пишут, что это баг в HPROF dump, от багов никто не застрахован. Конечно, реальная жизнь всегда сложнее любых моделей, но иногда удаётся к ней в какой-то мере приблизиться :-)
есть пару проектов, даже в центральном мавеновском хранилище, в названии присутствует «sizeOf». Присутствует в том числе и «глубокая» оценка объектов — с полным деревом ссылок, видимо, через рефлекшн делается.
А что там хитрого. инфа 99% что память организована также как и у обычного массива — буффер, который увеличивается в 2 раза каждый раз, когда близок к заполнению.
На минуточку, вы об организации на каком уровне говорите? если на уровне байт, то да что у массива. что у HashSet, что у TreeSet одно и то же устройство — область памяти. А если все же на уровне языковых структур, то массив далеко не так же устроен, как HashSet и TreeSet. У обычного массива, кстати память выделяется при создании и потом, не увеличивается по мере заполнения.
Конкретно не о Java, о стуктурном представлении сферических реализаций. Структура массив обычно реализовывают (судя по игровым движкам) как буффер, который таки увеличивается. И увеличивается абсолютно идентично буфферу HashMap, за тем лишь исключением, что Array буффер удваивает когда полностью забит, а HashMap, когда 75%, что нужно для того, чтобы стоимость вставки не скатывалась в o(n).
Накладные расходы памяти у коллекций