2012-05-31 2 views
5

Ich wollte nur wissen, ob es einen Leistungseinfluss auf das Setzen eines maxElementsInMemory gab, das viel höher ist als das, was tatsächlich verwendet wird? Zum Beispiel kann ein Maximum von 10.000 und nur 100Gibt es einen Leistungseinbruch mit einem zu großem maxElementsInMemory in ehcache config

ehcache.xml

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

Kontext mit: Ich bin mit ehcache mit Hibernate und ich möchte alle Datensätze einer Tabelle (alle Einheiten) zwischengespeichert werden. Von einem Kunden zum anderen variiert die Anzahl der Datensätze in dieser Tabelle, so dass es schwierig ist, einen genauen Maximalwert festzulegen.

Danke!

Marc

Antwort

3

Nein, es gibt keine. Dies ist nur ein max Wert. Wenn Ihr Cache nur 100 Gegenstände enthält, zahlen Sie die Kosten für eine Karte mit 100 Elementen. Die obere Grenze hat hier nichts zu tun.

Sie können sicher viel höhere Grenze verwenden (darunter ist eine einfache ConcurrentHashMap), obwohl es schwer ist, eine solche Wahl zu rechtfertigen.

+0

Rechte tks. Aber wird dieses Maximum nicht verwendet, um die Anfangskapazität der ConcurrentHashMap festzulegen? Das hätte Auswirkungen, oder? – Marc

+0

@Marc: Das schnelle Suchen der EhCache-Codebasis belegt, dass sie den max-Wert nicht verwendet, um die Map zu initialisieren. Und selbst wenn es so wäre - größere "initialCapacity" würde der Performance nicht schaden, sie würde nur mehr Speicher verbrauchen (was der Performance schaden wird, aber du bekommst meinen Standpunkt). –

Verwandte Themen