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 的可用空间)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...