В моем Java-коде я использую Multimap Guava ( com.google.common.collect.Multimap ), используя это:
Multimap<Integer, Integer> Index = HashMultimap.create()
Здесь ключ Multimap - это некоторая частьURL и значение - это другая часть URL (преобразованная в целое число).Теперь я назначаю пространство кучи JVM 2560 МБ (2,5 ГБ) (используя Xmx и Xms).Тем не менее, он может хранить только 9 миллионов таких (ключ, значение) пар целых чисел (около 10 миллионов).Теперь проблема в том, что я могу предоставить JVM только ограниченный объем памяти (скажем, 2 ГБ).
Итак, кто-нибудь может мне помочь,
1) Есть ли другой способ или домашнее решение?решить эту проблему с памятью?Значит, Multi-Map на основе диска / БД может быть хорошим решением?Я прочитал из некоторых веб-статей, что есть какое-то решение на основе БД / Диска для решения этой проблемы, например. Berkley DB или Ehcache .Кто-нибудь может сообщить мне, является ли (или какой) быстрее?
2) Есть ли проблемы с производительностью (основанные на дисках / БД Multi-Map) (я прошу как для сохранения, так и для поиска)?
3) Любая идея или информация, как их кратко использовать.
4) Для меня подойдет любая другая идея.
Примечание: я хочу решение Multimap (ключ может иметь несколько значений) для решения вышеуказанной проблемы.И я должен учитывать производительность хранения и поиска.