Как хранить колоссальные количества объектов в течении определенного времени с минимальными затратами по памяти?

Столкнулся с проблемой: необходимо создавать огромное количество объектов и при этом держать все эти объекты в памяти. При 16 млн объектов, ОП нагружается до 1 Гб. Рекомендуемым решением было объявлено понижение количества объектов. Есть-ли какие-то хитрости, которые позволят сохранять большие количества объектов в течении продолжительного времени? Буду рад ознакомится со всеми предложениями!


Ответы (1 шт):

Автор решения: CrazyElf

Не зная задачи сложно советовать. Но я бы подумал над архитектурой, может объекты в том виде, в каком вы их создаёте и не нужны? Как вариант - можно хранить в памяти данные, необходимые для их создания, а реально создавать объекты только в момент их использования и тут же уничтожать после этого (что-то вроде lazy initialization). Ещё вариант - хранить данные для объектов в БД и подтягивать оттуда по мере необходимости. Если совместить с предыдущим советом, то памяти вообще нужно будет минимум: подтянуть по необходимости данные из БД, создать объект, отдать его кому он там нужен, и потом удалить (возможно, не сразу, а по принципу LRU-cache). В общем, без знания конкретики задачи точно сразу сказать, что тут подойдёт - сложно. Если же у вас реально такая задача, что нужно держать в памяти 16 млн. "тяжёлых" объектов, то, нужно просто взять мощный сервер под задачу, это нормально, если задача реально такого требует.

→ Ссылка