ehcache memorystoresize и disctoresize - PullRequest
       3

ehcache memorystoresize и disctoresize

2 голосов
/ 24 сентября 2010

[Аватар] 2010-09-23 18:20:41 IST У меня есть следующая конфигурация для моего ehcache.

<CacheManager dynamicConfig="true" monitoring="autodetect" name="CacheManager1" 
  updateCheck="true"> <diskStore path="java.io.tmpdir" /> <defaultCache 
  clearOnFlush="true" copyOnRead="false" copyOnWrite="false" diskAccessStripes="1" 
  diskExpiryThreadIntervalSeconds="5" diskPersistent="true" diskSpoolBufferSizeMB="20" 
  eternal="true" logging="true" maxElementsInMemory="100" maxElementsOnDisk="100" 
  memoryStoreEvictionPolicy="LRU" name="cache1" overflowToDisk="true" statistics="true" 
  timeToIdleSeconds="0" timeToLiveSeconds="60" transactionalMode="off"> </defaultCache> 
  <cache clearOnFlush="true" copyOnRead="false" copyOnWrite="false" diskAccessStripes="1" 
  diskExpiryThreadIntervalSeconds="5" diskPersistent="true" diskSpoolBufferSizeMB="20" 
  eternal="true" logging="true" maxElementsInMemory="100" maxElementsOnDisk="100" 
  memoryStoreEvictionPolicy="LRU" name="cache1" overflowToDisk="true" statistics="true" 
  timeToIdleSeconds="0" timeToLiveSeconds="60" transactionalMode="off"> </cache>     
  </CacheManager> 

Для maxElementsInMemoryStore и maxElementsOnDiskStore установлено значение 100. Я поместил 150 элементов в кэш. Когда я запрашиваю MemoryStoreSize и DiskStoreSize, я получаю 138 и 15. Я не могу понять, возвращаемые размеры. Может кто-нибудь объяснить, пожалуйста, почему это так?

Ответы [ 2 ]

1 голос
/ 20 апреля 2011

Я нашел причину MemoryStoreSize > maxElementsInMemory здесь .Когда размер MemoryStore будет превышен, дальнейшие вызовы put() приведут к тому, что дополнительные элементы будут помещены в очередь переполнения (дисковая папка), которая асинхронно сбрасывается на диск с использованием рабочего потока.Очередь спулинга диска по умолчанию составляет 300 МБ и сбрасывается только при заполнении (или при выключении, если кэш-память сохраняется).

Вызов get MemoryStoreSize возвращает сумму элементов в MemoryStoreв очереди спула диска.

Некоторые элементы могут находиться в очереди и на диске одновременно, что объясняет, почему эти два числа не составляют 150.

0 голосов
/ 08 февраля 2011

Некоторые записи могут быть как в памяти, так и на диске, поэтому их добавление не даст вам общей суммы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...