2017-02-21 17 views
0

Я пытаюсь выяснить, какое количество, которое вы указали в Guava CacheBuilder, максимальный размер() и максимальный(), взвешивающие представления.Guava maximumSize или maximumWeight для ограничения объема кеш-памяти

Скажем, у меня есть что-то вроде этого в моем коде,

Cache<String, Object> programCache = CacheBuilder.newBuilder() 
.maximumSize(1000) 
.build(); 

ли 1000, что я указал в качестве максимального размера означает, что я могу иметь тысячи различных записей в кэше, прежде чем он начнет выгоняя LRU (независимо от размера объекта)? Если это так, существует ли ограничение на размер объекта?

Или это означает, что у меня есть 1000mb (это MB правильно?) Для работы, и я могу иметь столько объектов в кеше, сколько хочу до 1000mb, прежде чем он начнет выходить из LRU?

Тогда какой именно максимальный вес?

Оценивается, если для обеспечения максимальной кэш-памяти Guava 500 МБ предусмотрена хорошая конфигурация.

+0

Измерение потребления памяти любого типа действительно затруднено (и, вероятно, будет медленным) в Java. Кэш не прилагает усилий. –

ответ

0

Docs говорят maximumSize(long)

Задает максимальное число записей кэша может содержать.

Задание 500MB должно быть возможным с maximumWeight(long) и обычаем Weigher как

Там нет установки для весов входа; скорее они просто относительно друг друга.