我正在使用带有 Ehcache 的 ColdFusion 9
Ehcache 运行良好,但由于我重新安装了我的机器Ehcache.Cache.put
,拒绝处理特定元素,但正在处理大量其他元素。
Cache.put
不抛出异常,大约需要 4 秒才能返回。我尝试放入缓存的元素是一个 ColdFusion 组件,并且只有 7ko 左右。我不使用序列化。
缓存配置为:
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
maxBytesLocalHeap="300m">
<sizeOfPolicy maxDepth="99999999" maxDepthExceededBehavior="continue"/>
<defaultCache
eternal="false"
timeToIdleSeconds="300"
timeToLiveSeconds="1200"
overflowToDisk="false"
statistics="true">
我把它改成
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
maxEntriesLocalHeap="900">
<defaultCache
eternal="false"
timeToIdleSeconds="300"
timeToLiveSeconds="1200"
overflowToDisk="false"
statistics="true"
maxEntriesLocalHeap="100">
这行得通!从 a 更改maxBytesLocalHeap
为maxEntriesLocalHeap
config 会有所不同!我认为可能内部尺寸计算不起作用。使用maxEntriesLocalHeap
不需要大小计算,这就是它适用于新配置的原因。
所以为什么:
- 是
Cache.put
不是maxBytesLocalHeap
只处理一个特定的元素? - 没有例外?
Cache.put
功能需要4秒?- 全新机重新安装出现这个问题?
如果您有任何线索,请告诉我。我真的需要切换回maxBytesLocalHeap
.
PS:
- 该应用程序还使用 JDK 1.6、MachII、Hibernate 和 ColdSpring