Член команды гуавы здесь.
Поскольку размер кеша приближается к максимальному, кеш исключает записи, которые с меньшей вероятностью будут использоваться снова. Например, кэш может удалить запись, потому что она не использовалась в последнее время или очень часто.
Если кеш имеет другое поведение, он не документируется (и на него не следует полагаться). Тем не менее, текущая реализация только заботится о самом последнем доступе, если вы посмотрите на источник :
while (totalWeight > maxSegmentWeight) {
ReferenceEntry<K, V> e = getNextEvictable();
if (!removeEntry(e, e.getHash(), RemovalCause.SIZE)) {
throw new AssertionError();
}
}
и getNextEvictable
повторяются в порядке наименьшего числа обращений.