#java #ehcache
Вопрос:
Я попытался использовать EhCache для хранения 100000 строк, когда каждая строка представляет собой Json, который весит 4 МБ (всего 400 ГБ). (и ключ имеет номер от 1 до 100000)
Для его решения я использовал EhCache с этой программной конфигурацией:
CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder()
.with(CacheManagerBuilder.persistence(<PATH_TO_PERSISTENCE_DIR))
.withCache("session", CacheConfigurationBuilder.newCacheConfigurationBuilder(Integer.class, String.class,
ResourcePoolsBuilder.heap(1000)
.disk(600, MemoryUnit.GB)
).withExpiry(ExpiryPolicyBuilder.timeToLiveExpiration(Duration.ofSeconds(20))))
.build();
cacheManager.init();
Cache<Integer, String> sessionCache = cacheManager.getCache("session", Integer.class, String.class);
Разрешение после ~ 12 ГБ Кэш выдает исключение OOM и не может добавлять новые элементы.
Как я делаю что-то не так? Есть ограничение, которого я не видел? (На моем компьютере 32 ГБ оперативной памяти и ~1 ТБ свободного места)