У меня есть карта HashMap, где Node - это класс, содержащий некоторую информацию и, самое главное, соседей HashMap.Java - Cache HashMap с динамическим размером объекта
Мой алгоритм делает случайные данные из внешнего HashMap и помещает во внутреннюю HashMap, например.
Node node = map.get(someInt);
node.getNeighbors().put(someInt, someOtherInt);
У меня есть много записей как на внешней карте, так и на внутренних картах. Полный набор данных не может обрабатываться только с помощью памяти, поэтому мне нужно использовать некоторое кэширование диска. Я хотел бы использовать память как можно больше (до тех пор, пока она не будет полностью заполнена или пока не достигнет порога, который я укажу), а затем вытеснит записи на диск.
Я использовал несколько кешей (в основном mapDb и EhCache), пытаясь решить мою проблему, но не повезло. Я устанавливаю максимальный объем памяти, но кеш просто игнорирует его. Я почти уверен, что проблема кроется в том, что мой объект имеет динамический размер.
У кого-нибудь есть идеи о том, как я мог бы справиться с этой проблемой? Спасибо заранее.
Не могли бы вы дать мне понять, почему EhCache вам не поможет? Выбрасывает ли данные из дискового кэша из памяти? – sphinks
Выселение EhCache, похоже, игнорирует ограничения по размеру. Я работаю с -Xmx1g и устанавливаю размер кеша памяти до 300 Мб, но через некоторое время память заполняется и слишком много активности GC, искажая мое приложение. –