Caffeine - Caches - Cleanup
清理
默认情况下,Caffeine不会自动执行清理和元素剔除,也不会在条目过期后立即执行清理和元素剔除。取而代之的,它仅在写操作之后执行少量的维护工作,如果写操作很少,它会偶尔在读操作之后执行维护工作。如果你的缓存吞吐量很高,你不必担心执行缓存维护以清理过期条目等。如果缓存的读写操作很少,你可能希望采用下文所述的方式,启用一个外部线程,在合适的时候调用Cache.cleanUp()。
您可以提供一个调度器用来快速删除过期条目。通过调度,会批量执行过期事件,以在短时间内最大程度的减少执行次数。调度会尽力删除过期条目,但不能对何时删除做任何保证。Java 9+的用户可能更喜欢使用Scheduler.systemScheduler()来利用专用的系统范围的调度线程。
在Java 9+中,可以使用Cleaner来快速删除基于引用的条目(如果使用了弱引用key,弱引用value或软引用value)。只需要将key或value注册到Cleaner,其处理逻辑会调用Cache.cleanUp触发维护程序。