问题描述
当每个字符串都是一个 4MB(总共 400GB)的 Json 时,我尝试使用 EhCache 来存储 100000 个字符串。 (key 是从 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);
解决方案是在 ~12GB 之后缓存抛出 OOM 异常并且无法添加新元素。
因为我做错了什么?有我没看到的限制吗? (我的电脑有 32GB 的内存和 ~1TB 的可用空间)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)