GNU Trove предлагает ряд карт (например, TIntIntHashMap ), которые более эффективны по памяти, чем стандартные карты Java, поскольку в них используются примитивные типы.Я сомневаюсь, что вы можете получить значительно больше памяти, чем это, если вы не знаете что-то о том, что вы храните.Trove - это более или менее LGPL, так что, вероятно, использовать его безопасно.Я не знаю, соответствует ли он вашим точным спецификациям, но я думаю, что стоит попробовать, когда вы можете разместить что-то в оперативной памяти.
Когда вам может понадобиться перейти на диск, Ehcache - этохороший выбор.Вы можете указать, что после определенного количества записей он будет хранить значения на диске (недавно в версии 2.5 вы можете указать после того, как определенное количество оперативной памяти будет использоваться, если вы не знаете, как точное количество записей).