2012-05-31 11 views
5

¿Solo quería saber si hubo un impacto en el rendimiento al establecer un maxElementsInMemory mucho más alto que el que realmente se usa? Por ejemplo, un máximo de 10.000 y utilizando sólo 100.¿Hay un golpe de rendimiento con un maxElementsInMemory demasiado grande en la configuración de ehcache

ehcache.xml

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

Contexto: Estoy utilizando ehcache con Hibernate y quiero que todos los registros de una tabla (todas las entidades) que se almacenan en caché. De un cliente a otro, el número de registros en esa tabla varía, por lo que es difícil establecer un máximo preciso.

Gracias!

Marc

Respuesta

3

No, no hay ninguno. Esto es solo un valor max. Si su caché solo contiene 100 elementos, pagará el costo de un mapa con 100 elementos. El límite superior no tiene nada que hacer aquí.

Puede utilizar de forma segura un límite mucho más alto (debajo es un simple ConcurrentHashMap) aunque es difícil justificar tal elección.

+0

Derecho tks. Pero, ¿no se usará este máximo para establecer la capacidad inicial de ConcurrentHashMap? Esto tendría un impacto, ¿no? – Marc

+0

@Marc: la búsqueda rápida de la base de código de EhCache demuestra que no utiliza el valor máximo para inicializar el mapa. E incluso si lo fuera, una 'initialCapacity' mayor no dañará el rendimiento, solo usará más memoria (lo que dañará el rendimiento después de todo, pero entiende mi punto). –

Cuestiones relacionadas