Когда overFlowToDisk активируется в EHCACHE?

У меня есть вопросы по атрибуту элемента "overflowToDisk"?

1) Я прочитал по этому URL, что:

overflowToDisk устанавливает, может ли элемент переполняться на диск, когда хранилище памяти достигло максимального предела.

«Память» выше относится к памяти JVM, выделенной для процесса Java, выполняющего EHCACHE, или есть ли какой-либо параметр для указания размера кэш-памяти?

2) Когда по какой-то причине завершается работа EHCACHE, очищается ли этот диск и все в кеше исчезает?


person Vicky    schedule 05.09.2010    source источник


Ответы (2)


Элементы начинают переполняться на диск, когда в хранилище памяти их больше, чем maxElementsInMemory. В следующем примере создается кеш, который хранит 1000 элементов в памяти и, если вам нужно хранить больше, до 10000 на диске:

<cache name="cacheName"
       maxElementsInMemory="1000"
       maxElementsOnDisk="10000"
       overflowToDisk="true"
       timeToIdleSeconds="..."
       timeToLiveSeconds="...">
</cache>

Что касается второго вопроса, взгляните на параметр diskPersistent. Если установлено значение true, Ehcache сохранит ваши данные на диске, когда вы остановите JVM. Следующий пример демонстрирует это:

<cache name="cacheName"
       maxElementsInMemory="1000"
       maxElementsOnDisk="10000"
       overflowToDisk="true"
       diskPersistent="true"
       timeToIdleSeconds="..."
       timeToLiveSeconds="...">
</cache>
person candiru    schedule 15.10.2010

Начиная с Ehcache 2.6, модель хранения больше не является моделью переполнения, а является многоуровневой. В многоуровневой модели хранения все данные всегда будут находиться на самом низком уровне. Предметы будут представлены на более высоких уровнях в зависимости от их популярности.

Возможные уровни для Ehcache с открытым исходным кодом:

  • В куче, которая находится в куче JVM
  • На диске, который является самым низким

По определению высокие уровни имеют меньшую задержку, но меньшую емкость, чем более низкие уровни.

Таким образом, для кэша с открытым исходным кодом, сконфигурированного с overflowToDisk, все данные всегда будут находиться внутри дискового уровня. Ключ будет храниться в памяти, а данные на диске.

Ответ скопирован из этого другого вопроса.

person Louis Jacomet    schedule 29.04.2014