当前位置: 首页 > 知识库问答 >
问题:

Ehcache低内存行为

戈华茂
2023-03-14

我使用的是ehcache 1.2.3。由于缓存大小是根据“元素”指定的,缓存占用的内存可能会有很大差异(ehcache与hibernate一起使用,并且还保存标准查询缓存,其中查询返回大小可能会有所不同的结果集)。我的问题是:如果JVM内存不足会发生什么。阅读ehcache的变更日志给我的印象是,最初它使用的是软引用,但由于java 1.4正在大力清理它们,软引用最终被删除了。因此,如果缓存太大,我只会得到OutOfMemoryError?Ehcache中没有试图阻止它的东西?

共有1个答案

宗政学
2023-03-14

你是对的,如果你想用ehcache创建一个OOM,你可以这样做。您看过大小调整选项了吗,比如maxEntriesLocalHeap/maxBytesLocalHeap。使用这些可以有效地防止缓存使用超过分配的内存量。

参见例如http://ehcache.org/documentation/configuration/cache-size

 类似资料:
  • 问题内容: 使用这些JPA属性 Ehcache对于同一查询效率不高, 问题与QueryCache类的namedParameters.hashCode()函数有关,它为同一查询生成了不同的HashCode! 与班级有关 它将为同一Array对象[01,1]生成一个不同的(新)hachCode! 对于数组,此hashCode方法应该是递归的 问题答案: 递归版本完全正常 类org.hibernate.

  • 如EhCache留档所述: 实际上,这意味着持久性内存中缓存将启动,其所有元素都将在磁盘上。[...]因此,Ehcache设计不会在启动时将它们全部加载到内存中,而是根据需要懒惰地加载它们。 我希望内存缓存启动时将所有元素都存储在内存中,我该如何实现? 这是因为我们的网站对缓存执行了大量的访问,所以我们第一次访问网站时,它的响应时间非常长。

  • 使用thoses和JPA属性 Ehcache对于相同的查询不是有效的, 问题与QueryCache类的函数namedParameters.hashCode()有关,它为同一个查询生成不同的HashCode! 这与类有关 它为同一个数组对象[01,1]生成一个不同的(新的)hachCode! 此hashCode方法对于数组应该是递归的

  • 我用EhCache缓存了2.5 Gb的数据。我有32个不同大小的文件,但是总数据量是2.5 Gb。我用12G堆内存运行我的代码,但是整个数据集不能容纳12G的数据,它溢出到磁盘。你能告诉我配置中出了什么问题吗,或者EhCache总是占用那么多内存。所有的缓存我都把整数作为键,列表作为值(分隔文件的记录) 使用的JVM参数 下面是我用于缓存的代码片段 下面是内存和CPU配置文件屏幕截图

  • 我正在尝试编写一个相当大的XLSX文件(4百万个单元格),但我有一些内存问题。 我不能使用SXSSF,因为我还需要读取模板中的现有单元格。 我能做些什么来减少内存占用吗<或许可以将流式阅读和流式写作结合起来?

  • 问题内容: 我正在生产中运行大型VM,并且想在运行时了解有关我的缓存大小的更多信息。我的缓存都是基于ehache 在运行时查看单个缓存大小的最佳方法是什么。使用JMX或API 是否可以通过对CacheManager的纯Java调用来配置任何选项,或者(暂时忽略JMX)必须以大字符串构建XML配置? 问题答案: 是的,使用Ehcache,您可以配置缓存并仅通过Java代码(没有XML配置)来检索其大