Play Framework 2缓存的OOM错误

时间:2012-11-21 22:31:31

标签: memory playframework-2.0 ehcache

我正在将Play Framework 2用于各种搜索引擎以及随附的默认缓存。我缓存每个查询的结果。令人惊讶的是,我遇到了内存不足错误。我没有指定逐出时间,但我的印象是EhCache将使用默认策略(Play 2.0 ehcache.xml)逐出条目。这不是这种情况吗?我可以通过指定自己的ehcache.xml来覆盖Play的conf/ehcache.xml吗?我需要以不同的方式配置什么?

更新:在更多挖掘之后,OOM错误可能是由另一个组件引起的。但问题仍然存在:当内存紧张时,Play的EHCache会被逐出吗?启用缓存会导致我更快地出现OOM错误。

1 个答案:

答案 0 :(得分:2)

根据您链接到的ehcache.xml,当入口计数达到堆中的10k个条目时,ehcache将逐出。现在您还使用diskStore,上限为10M条目。但是磁盘存储仍然需要所有的密钥才能适合内存......这可能是你所面临的问题。

另外,请注意TTI / TTL将被内联。那就是数据在访问时检查新鲜度。 Ehcache不会产生一个线程,它会主动地从缓存中转发元素。

希望这会有所帮助......