Я создаю небольшой кэш-демон и хочу ограничить его использование памяти до приблизительно указанного количества.Однако, кажется, есть проблема, просто пытающаяся вычислить, сколько памяти используется.
Каждый раз, когда создается объект CacheEntry, он добавляет размер объекта CacheEntry (по-видимому, 64 байта) плюс количество байтов, используемых во внутренних массивах для счетчика, сколько байтов используется.Когда объект CacheEntry удаляется, он вычитает эту сумму.Я могу подтвердить, что, по крайней мере, математика верна.
Однако при запуске внутри NetBeans профилировщик памяти сообщает значительно разных чисел.Примерно в два раза выше, если быть точным.Это не утечка памяти, и это определенно связано с количеством существующих объектов CacheEntry .Увеличение объема данных, хранящихся во внутренних массивах, фактически сближает числа (в отличие от дальнейшего разделения, если это было неправильно рассчитано);Исходя из этого, я пришел к выводу, что накладные расходы на наличие объекта CacheEntry в памяти почти вдвое превышают размер sizeof ().Он не растет поэтапно или «порциями».
Существует ли какая-то общая причина, по которой это может произойти?
ОБНОВЛЕНИЕ: Просто чтобы проверить, я выполнил свои тесты безпрофилировщик на месте.Linux сообщает об одном и том же VmHWM / VmRSS, так что профилировщик памяти определенно не влияет на вычисления.