我正在使用singleFileCacheStore
。我已将maxEntries
设置为0且passivation
已禁用
<persistence passivation="false" >
<singleFile fetchPersistentState="true" preload="true"
ignoreModifications="false"
purgeOnStartup="false" maxEntries="0" >
</singleFile>
</persistence>
在我的应用程序中,我正在解雇cache.remove(key)
,但我仍然在底层文件中看到条目。
有任何线索,什么错?我是否需要调用任何额外的API。
答案 0 :(得分:2)
条目的空间刚刚被标记,它将被新的或更新的条目重用。因此,您将始终看到旧数据,直到写入新内容。
处理清除时,文件本身将被截断/缩小。 SingleFileCacheStore
实现非常简单,所以只有在文件末尾有空闲空间时才会发生这种情况。如果文件中间的某个位置有空闲空间,则没有压缩。这并不完美,但相当不错,因为缓存中的条目通常总是存在波动。但这意味着,如果强制清除,即使有可用空间,文件也不会被截断。
在documentation中的驱逐中查看如何控制清除。基本上就是:
EvictionManager的目的是驱逐驱逐/过期 定期清除DataContainer中项目的线程。如果 驱逐线程被禁用(wakeupInterval设置为-1)驱逐即可 使用EvictionManager.processEviction()手动启动 来自另一个可能定期运行的维护线程的示例 你的申请。