2012-05-31 14 views
5

Volevo solo sapere se c'era un impatto sulle prestazioni nell'impostare un maxElementsInMemory molto più alto di quello che viene effettivamente utilizzato? Ad esempio, un massimo di 10.000 e utilizzando solo 100.C'è un impatto sulle prestazioni con un maxElementsInMemory troppo grande nella configurazione di ehcache

ehcache.xml

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

Contesto: Sto usando EHCache con Hibernate e voglio che tutti i record di una tabella (tutti i soggetti) per essere memorizzati nella cache. Da un cliente all'altro, il numero di record in quella tabella varia, quindi è difficile impostare un valore massimo preciso.

Grazie!

Marc

risposta

3

No, non c'è nessuno. Questo è solo un valore max. Se la tua cache contiene solo 100 oggetti, pagherai il costo di una mappa che contiene 100 elementi. Il limite superiore non ha nulla da fare qui.

È possibile utilizzare in sicurezza un limite molto più elevato (al di sotto è un semplice ConcurrentHashMap) anche se è difficile giustificare tale scelta.

+0

Right tks. Ma questo massimo non verrà utilizzato per impostare la capacità iniziale di ConcurrentHashMap? Questo avrebbe un impatto, no? – Marc

+0

@Marc: la ricerca rapida del codice base di EhCache dimostra che non utilizza il valore massimo per inizializzare la mappa. E anche se lo fosse - una maggiore 'initialCapacity' non danneggerà le prestazioni, userà solo più memoria (che danneggerà le prestazioni, dopo tutto, ma tu ottieni il mio punto). –

Problemi correlati