У вас есть два варианта.
1) Сократить то, что вы храните.
Если ваши данные рассчитаны, использование WeakHashMap позволит сборщику мусора удалять участников. Возможно, вы захотите украсить его механизмом, который вычисляет потерянные или отсутствующие пары ключ / значение на лету. Это в основном кеш.
Другая возможность, которая может сократить относительно небольшой объем ОЗУ, - дать указание вашей JVM использовать указатели сжатых объектов. Это может сэкономить вам около 3 МБ с вашим текущим размером данных.
2) Расширьте свои возможности.
Я не уверен, каково ваше ограничение (оперативная память на рабочем столе, сериализация и т. Д.), Но вы можете либо расширить размер кучи и разобраться с ним, либо вы можете вытолкнуть его из процесса. Со всеми этими магазинами "NoSQL", один, вероятно, подойдет вашим потребностям. Или индексированная таблица БД может быть довольно быстрой. Если вы ищете простое хранилище ключей-значений, Voldemort чрезвычайно прост в настройке и интеграции.
Однако я не знаю, что вы делаете со своим рабочим набором. Вы можете дать более подробную информацию? Вы выполняете агрегацию, разбиение, кластерный анализ и т. Д.? Где у вас проблемы?