Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java EE (J2EE) и Spring > Измерить и кешировать объект |
Автор: oson 21.5.2013, 20:34 |
Как реализовать такую фичу. Есть класс SessionsKeeper, у которого есть List<Session> sessions. Session - это мой класс, который содержит поля id,sessionAttributes, expireDate и тп. Когда новый клиент заходит в систему, то создается новый объект класса Session и помещается в в список sessions в классе SessionsKeeper. SessionsKeeper - это singleton, который содержит список сессий для всего приложения. Периодически запускается scheduler, который удаляет из списка sessions те сессии, у которых expireDate уже больше текущей даты. Если количество сессий будет увеличиваться, у меня возникнет проблема с нехваткой памяти. 1. Как можно измерить размер объекта SessionsKeeper? 2. Как лучше реализовать кеширование этого объекта на жесткий диск (при достижении заданного размера) и считывания оттуда при запросе объекта SessionsKeeper? |
Автор: oson 21.5.2013, 21:28 |
Спасибо. |
Автор: jk1 26.5.2013, 10:04 |
oson, мне кажется Вы велосипед изобретаете. Посмотрите на https://code.google.com/p/guava-libraries/wiki/CachesExplained. Он легкий и умеет все, что Вы пытаетесь реализовать: удаление элементов по времени, по количеству, слабые ссылки, что бы не съесть слишком много памяти - все там работает из коробки. |
Автор: batigoal 28.5.2013, 08:08 |
+1 за Guava. Хотя из коробки он на диск сохранять и не умеет, но можно повесить лисенеры на загрузку-вугрузку значений из кеша, и реализовать эту логику в них. |