ehcache doc(http://ehcache.org/documentation/configuration/cache-size)将maxEntriesLocalHeap描述为
缓存可以在本地堆内存中使用的最大缓存条目数或字节数,或者在CacheManager级别设置时 (仅限maxBytesLocalHeap),一个可用于所有缓存的本地池 那个CacheManager。每个缓存或在每个缓存都需要此设置 CacheManager级别。
这是否意味着对于此配置:
<cache
name="myCache"
maxEntriesLocalHeap="5000"
eternal="false"
overflowToDisk="false"
timeToLiveSeconds="10000"
memoryStoreEvictionPolicy="FIFO" />
可以添加到缓存的最大对象数为5000.这些对象可以包含多个子对象,但只添加顶级父对象作为条目。因此,如果每个对象都引用了另外两个对象,那么maxEntriesLocalHeap对象的数量可能会增加到15000(此时最旧的对象会在添加新对象时被换出)。这是对的吗?
答案 0 :(得分:6)
是。
maxEntriesLocalHeap强制实施仅计算您在缓存中存储的键/值对的数量。作为用户,您可以很好地理解保留每个条目的堆开销,并确保配置的Java堆可以应对此负载。