Я хотел использовать HashSet<Long>
для хранения большого списка уникальных номеров в памяти. Я вычислил предполагаемую потребляемую память (в размере 64-битного указателя):
Long займет 16 байт пространства. Поэтому изначально я умножил число записей с 16, чтобы получить память. Но на самом деле память составляла более 16 байт на запись. После этого я изучил реализацию HashSet
. Короче говоря, в основной реализации он фактически хранит дополнительный фиктивный объект (12 байтов) с каждой записью hashset. И указатель (8 байт) на следующую запись. Таким образом, уступают дополнительные 12 + 8 байт на запись.
Таким образом, общая память на запись: 16 + 12 + 8 = 36 байт. Но все же, когда я запускал код и проверял память, он все равно составлял более 36 байт на запись.
Мой вопрос (вкратце): сколько памяти делает HashSet
(например, на 64-битной машине)?