Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ehcache в клиентском приложении, как динамически управлять memoryStore 
:(
    Опции темы
COVD
Дата 29.12.2009, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 6
Всего: 43



Возникла идея применить кеш-систему в клиентском приложении для достижения двух целей:
1. Снизить обьем загружаемых с сервера данных. 
2. Уменьшить расход оперативной памяти.

Обе цели реализуются предоставляемой кеш-системой возможностью сохранения на локальном диске для редкоменяющихся и редкоиспользуемых данных. В качестве кеша я взял легендарный http://ehcache.org/.

Первая задача легко реализовалась установлением параметров кеша overflowToDisk = true (default), diskPersistent = true. Однако обнаружился нюанс - команда removeCache(String cacheName) не удаляет файлы такого кеша. Таким образом почистить диск клиента у меня не получилось.

Для второго пункта я хотел убрать ограничение на количество обьектов в memoryStore кеша и управлять обьектами установлением параметра timeToIdleSeconds. Ожидал, что невостребованные в течении этого времени обьекты будут удаляться кешем из памяти ( но продолжать храниться на диске). Неограниченный обьем памяти формально не предусмотрен - параметр maxElementsInMemory обязателен и при установлении его значения в ноль в памяти буквально ничего хранится не будет. Конечно, можно присвоить этому параметру очень большое значение, которое практически снимет ограничение. Но опыты показали, что в этом случае timeToIdleSeconds роли не играет (неважно, eternal = true or false ). Обьекты продолжают оставаться в памяти, если не превышен лимит maxElementsInMemory. Пока вынужден установить небольшой лимит maxElementsInMemory и memoryStoreEvictionPolicy = LFU ( least frequently used ), т.е. при превышении ограничения из памяти будут удаляться наиболее редко используемые обьекты. Недостаток этого подхода в том, что требуется правильно выбрать maxElementsInMemory, а в моем приложении более натурален критерий  времени простоя timeToIdleSeconds.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java tools & IDE's | Следующая тема »


 




[ Время генерации скрипта: 0.0639 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.