Хранение многих объектов с использованием Java - PullRequest
4 голосов
/ 17 марта 2011

Я обращаюсь к сообществу, чтобы понять, есть ли способ хранить много объектов в структуре карты Java (> 500 КБ).Я знаю, что в какой-то момент мое приложение превысит объем памяти, если я использую API Java Collections и ищу другие решения (кроме распределенного кэширования).Мое намерение состоит в том, чтобы сохранить что-то с эффектом карты.

Требования:

  • Структура будет неизменной (одноразовая загрузка в карту).В первую очередь доступ для чтения.
  • Доступ к карте должен быть достаточно быстрым, но он не требует поиска с малой задержкой, больше заботится о хранении и сохранении этих объектов в памяти.

Кто-нибудь знаеттакой библиотеки, которую я могу использовать, чтобы достичь этого, или кто-нибудь когда-нибудь сталкивался с решением, в котором они должны были загружать много объектов в память на Java?Мне было бы очень интересно услышать ваши отзывы.

Спасибо.

Ответы [ 3 ]

10 голосов
/ 17 марта 2011

EhCache было бы идеально для этого.По своей сути он предлагает карту ключ-значение с необязательным переполнением на диск и необязательным постоянством при перезапуске JVM.Он сохранит в памяти наиболее часто используемые элементы.

1 голос
/ 17 марта 2011

Рассматривали ли вы базу данных только для чтения, такую ​​как java cdb: http://www.strangegizmo.com/products/sg-cdb/

1 голос
/ 17 марта 2011

Я со скаффманом.В дополнение к переполнению на диск EhCache предлагает вам разместить кэш внутри процесса, но вне кучи.Если ваш кэш действительно большой, это может оказать очень положительное влияние на производительность, поскольку снижает нагрузку на ГХ.

Однако за эту особую функцию нужно платить, но в противном случае EhCache бесплатен.

Вместо EhCache в Java есть пара других кэшей, которые предлагают аналогичные или иногда даже более продвинутые опции, такие как Infinispan или OsCache.

...