2012-05-31 33 views
5

只是想知道是否對設置maxElementsInMemory的性能影響遠高於實際使用的性能?例如,10000 max和只使用100eHcache配置中的maxElementsInMemory性能是否太大?

ehcache.xml中

<defaultCache 
    eternal="false" 
    overflowToDisk="false" 
    maxElementsInMemory="10000" 
    timeToIdleSeconds="7200" 
    timeToLiveSeconds="0"/> 

語境:我使用與Hibernate的Ehcache和我想要一個表(所有實體)的所有記錄被緩存。從一個客戶到另一個客戶,該表中的記錄數量會有所不同,因此很難設置精確的最大值。

謝謝!

Marc

回答

3

不,沒有。這只是一個值。如果您的緩存只能存儲100個項目,則您將支付包含100個元素的地圖的費用。上限在這裏沒有任何關係。

您可以安全地使用更高的限制(下面是一個簡單的ConcurrentHashMap),但很難證明這種選擇是合理的。

+0

對tks。但是這個最大值不會被用來設置ConcurrentHashMap的初始容量嗎?這會產生影響,不是嗎? – Marc

+0

@Marc:快速搜索EhCache代碼庫證明它不使用最大值來初始化映射。即使是 - initialCapacity更大也不會損害性能,它只會使用更多的內存(畢竟這會損害性能,但你明白了我的觀點)。 –