Я работаю над вычислением размера [памяти] java-объекта [hashmap]. Он содержит элементы разных типов данных [во время выполнения], поэтому [no-of-elem * size-of-element] не является хорошим подходом. Код прямо сейчас делает это по серии
if (x)
do something
else if (primitives)
lookup size and calculate
Однако этот процесс является болотом процессора и неэффективным.
Я думаю о следующих двух подходах:
- Сериализуйте объект в буфер и получите размер.
- Посмотрите на java.lang.instrument, чтобы получить размер
Я ищу опыт работы с этими подходами для производительности, эффективности, масштабирования и т.д. ИЛИ если вы знаете лучший способ.
P.S: Это фоновая утилита, которую я создаю, поэтому размер не должен быть слишком точным, хотя он должен быть прав. Поэтому я готов торговать с точностью до производительности
Меня не интересует глубокий размер (размер объектов, на которые ссылается этот объект, не будет вычислен.)
Я ищу сравнение производительности и понимание того, как getObjectSize() работает внутри.. так что я не перепутаю что-то еще, чтобы улучшить производительность
Спасибо