【发布时间】:2011-08-23 17:09:27
【问题描述】:
我正在运行 ATG 9,并在 repository.xml 中配置了一堆不同的对象,以具有特定的缓存大小、ttl 等。
例如:
<item-descriptor name="USER"
query-expire-timeout="300000"
item-expire-timeout="300000"
item-cache-timeout="300000"
item-cache-size="20000"
query-cache-size="50">
...
我预计缓存不会超过该大小,并且会使旧项目过期以保持缓存大小等于或低于 item-cache-size。但是,当我查看 Dynamo 管理控制台中的缓存统计信息时,我看到我们的几个项目的 usedRatios 为 500-1000%。随着越来越多的项目被缓存并且显然从未释放,这会随着时间的推移占用 JVM 中的所有内存。如果我在管理控制台中调用 Repository 上的 invalidateCaches 方法,则可用内存会向上跳回,然后缓慢的下降再次开始。
如何确保缓存不会增长超过其配置的大小并占用所有内存?我缺少一些配置设置吗?是否必须采用一些代码技巧来防止缓存失控? ATG 文档不是信息量最大的,谷歌搜索也没有得到太多信息。
【问题讨论】:
-
USER 的情况在这里重要吗?您是否尝试过更改缓存模式?
-
相信你还必须在xml文件的顶部指定xml-combine。类似于
<gsa-template xml-combine="append">。
标签: caching repository atg