EhCache 是否需要特定配置才能存储在磁盘上?

时间:2021-06-14 11:03:46

标签: java ehcache

当每个字符串都是一个 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 的可用空间)

0 个答案:

没有答案