EhCache 3.10.x缓存内存分配:预分配还是动态?配置堆内存疑问
EhCache 3.10.x堆内存分配机制说明
针对你的问题,EhCache 3.10.x版本中通过<heap unit="MB">50</heap>指定的堆内存并非预分配,而是动态分配模式:
- 这个50MB是该缓存允许使用的JVM堆内存上限,JVM不会在缓存初始化时就为其分配50MB内存。
- 内存会随着缓存条目的增加动态增长,实际占用的内存量取决于当前缓存中存储的数据大小。
- 当缓存占用的内存达到50MB上限时,EhCache会触发默认的LRU(最近最少使用)淘汰策略,移除符合条件的旧条目,确保内存使用不超过设定的阈值。
你的缓存配置如下:
<cache alias="orderDetailsCache"> <key-type> java.lang.String </key-type> <value-type> java.lang.String </value-type> <expiry> <ttl units="seconds">120</ttl> </expiry> <resources> <heap unit="MB">50</heap> </resources> </cache>
内容的提问来源于stack exchange,提问作者divya siddu
相关产品推荐
相关产品推荐

