Это много вопросов.Все они объяснены на вики-странице Caches Explained Гуавы.
Если я не установлю maximumSize
, что произойдет?размер будет постоянно расти?
Что произойдет, если записи будут освобождены при выполнении других условий или при отсутствии доступной памяти.Так что да, размер будет расти до тех пор, пока эти условия не будут выполнены.(Раздел «Выселение по размеру» )
это повлияет на размер?память?
maximumSize(long)
указывает конкретный размер объекта.По умолчанию это количество элементов, которые присутствуют в кеше.Но если вы используете weigher(Weigher)
, вы можете сказать, что конкретный элемент стоит больше или меньше, поэтому приближается к фактическому использованию памяти.Но тогда вы должны написать свой Weigher
.(Раздел «Выселение на основе размера» )
Если я запланирую задание, которое преформует cleanUp
(для каждого интервала), когда записи будут удалены из кэша?
Записи будут удалены при вызове метода cleanUp()
.(Раздел «Когда происходит очистка?» )
и как это произойдет, если я только refreshAfterWrite
?
Если вывызовите cleanUp()
с кешем refreshAfterWrite
, запись, к которой вы хотите получить доступ, должна быть загружена снова, независимо от того, был ли активирован refreshAfterWrite
или нет.
Допустим, я установил refreshAfterWrite
без какого-либо вызова cleanUp, истекшие записи будут удалены из кэша?
Нет, refreshAfterWrite
не совпадает с expireAfterWrite
.Запись будет иметь право на обновление , но не будет удалена .Если вы использовали expireAfterWrite
, то срок действия записи истечет и будет удален .
(т.е. я вызову cache.size () и посмотрю, что это былоуменьшилось).
Это не так, как это работает.Кеш не является гарантированным работником.Это не похоже на коллекцию.Возможно, что некоторые записи не учитываются при расчете размера или что некоторые записи по-прежнему считаются частью размера, но еще не удалены эффективно.Это явно , записанное в Javadoc для метода size()
:
size
long size()
Возвращает приблизительное количество записей в этом кэше.
По сути, вы действительно должны прочитать всю документацию по вики-странице Caches Explayined wiki .Вся фактическая информация там, в очень наглядном виде.