栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

EhCache休眠2级缓存maxBytesLocalHeap慢

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

EhCache休眠2级缓存maxBytesLocalHeap慢

简短答案

原来,我遇到的问题是由于在模型中使用了Joda-
Time实例(我使用Jadira的UserType库来映射Joda类型)。

Joda类型保留了各种内部引用(包括对导致年代久远的对象图的年代信息的引用),而Ehcache遍历

SizeOfEngine
这些引用导致了我的原始警告。

我没有找到一种干净的方法来配置SizeOfEngine引擎以排除这些引用,但是再一次,我猜想一种更干净的方法是强制Hibernate首先仅将相关信息放入第二级缓存(在我的时间实例中的情况

LocalDateTimes
)。

更多细节

这是我关于OP的发现(使用Hibernate 4.2.15.Final,EhCache 2.6.9和UserType 3.2.0.GA):

首先,我对Hibernate如何在第二级缓存中存储实体存有误解。阅读Lorimer关于真正了解二级缓存和查询缓存的博客条目后,很多事情对我来说更有意义:

  • 您不必担心双向关联(或与此相关的循环图),因为Hibernate只会将关联的ID放入缓存中。即使将对整个实体的引用放入缓存中(但不是),EhCache的SizeOf Engine也会跟踪图中已访问过的对象,并且不会对它们进行两次大小调整。
  • 同样,您不必担心瞬态字段,因为Hibernate不会将它们放入缓存中
  • 从理论上讲,配置应该没有任何问题
    maxBytesLocalHeap
    。当前,当您使用EhCache的SizeOf引擎无法正确衡量的自定义用户类型时,会出现问题。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/417584.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号