2015-12-14 6 views
0

Есть ли способ ограничить помещение объекта большим, чем заданный размер.Ограничить перенос негабаритного объекта в кэш Guava

+1

И как бы вы определили этот размер? Вы не можете достоверно определить размер в байтах POJO, поскольку он полностью зависит от реализации (даже если сам POJO довольно хорошо определен, ограничения выравнивания ЦП выходят за рамки даже спецификации JVM) – fge

+0

@fge Я думал об использовании java .lang.instrument.Instrumentation. – Eranda

+0

Что вы хотите сделать с записью, когда ее негабарит? Вы бросаете исключение (например, из «Weigher») или загружается, но не кэшируется? –

ответ

3

Если вы используете LoadingCache, просто: просто сделайте свой CacheLoader исключением, если загруженный объект слишком велик.

Если вы используете кеш без загрузки, то нет. Нет никаких средств для обновления вето кеша.

+0

Я хочу использовать его, когда я помещаю его в кеш. Реализация методов загрузки/перезагрузки, похоже, не помогает мне. – Eranda

+3

@ Эранда А? Единственная цель метода загрузки - «положить вещи в кеш». Если вы напишете свой собственный метод загрузки, вы можете реализовать любые правила, которые вы хотите. – rmlan

+0

@rmlan Я хочу проверить, есть ли поддержка OOTB, как настройка размера. Кажется, нет. Благодарю. – Eranda