Есть ли способ ограничить помещение объекта большим, чем заданный размер.Ограничить перенос негабаритного объекта в кэш Guava
ответ
Если вы используете LoadingCache
, просто: просто сделайте свой CacheLoader
исключением, если загруженный объект слишком велик.
Если вы используете кеш без загрузки, то нет. Нет никаких средств для обновления вето кеша.
Я хочу использовать его, когда я помещаю его в кеш. Реализация методов загрузки/перезагрузки, похоже, не помогает мне. – Eranda
@ Эранда А? Единственная цель метода загрузки - «положить вещи в кеш». Если вы напишете свой собственный метод загрузки, вы можете реализовать любые правила, которые вы хотите. – rmlan
@rmlan Я хочу проверить, есть ли поддержка OOTB, как настройка размера. Кажется, нет. Благодарю. – Eranda
И как бы вы определили этот размер? Вы не можете достоверно определить размер в байтах POJO, поскольку он полностью зависит от реализации (даже если сам POJO довольно хорошо определен, ограничения выравнивания ЦП выходят за рамки даже спецификации JVM) – fge
@fge Я думал об использовании java .lang.instrument.Instrumentation. – Eranda
Что вы хотите сделать с записью, когда ее негабарит? Вы бросаете исключение (например, из «Weigher») или загружается, но не кэшируется? –