2012-05-31 4 views
5

Chciałbyś tylko wiedzieć, czy wpływ ustawienia wydajności na wartość maxElementsInMemory był znacznie wyższy niż w rzeczywistości? Na przykład, max 10000 i przy użyciu tylko 100.Czy wydajność osiągnięto za pomocą parametru maxElementsInMemory zbyt dużego w konfiguracji ehcache?

ehcache.xml

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

Kontekst: używam ehcache z hibernacji i chcę wszystkie rekordy z tabeli (wszystkie jednostki) mają być buforowane. Od jednego klienta do drugiego liczba rekordów w tej tabeli jest zmienna, więc trudno jest ustawić dokładną wartość maksymalną.

Dzięki!

Marc

Odpowiedz

3

Nie, nie ma. Jest to po prostu wartość max. Jeśli Twoja pamięć podręczna zawiera tylko 100 pozycji, zapłacisz koszt mapy zawierającej 100 elementów. Górny limit nie ma tu nic wspólnego.

Można bezpiecznie użyć znacznie wyższego limitu (pod spodem jest prosty ConcurrentHashMap), chociaż trudno jest uzasadnić taki wybór.

+0

Prawa tks. Ale czy to maksimum nie zostanie użyte do ustawienia początkowej pojemności ConcurrentHashMap? To miałoby wpływ, nie? – Marc

+0

@Marc: szybkie przeszukiwanie bazy kodu EhCache udowadnia, że ​​nie wykorzystuje maksymalnej wartości do zainicjowania mapy. A nawet gdyby tak było - większy "initialCapacity" nie zaszkodzi wydajności, użyje tylko więcej pamięci (co w końcu zaszkodzi wydajności, ale dostaniesz mój punkt widzenia). –

Powiązane problemy