【发布时间】:2012-03-30 03:19:35
【问题描述】:
最新版的优秀Guava库更新了缓存api。 CacheBuilder 现在有一个 maxmimumWeight() 方法来强制缓存的最大权重。 javadoc 声明:
指定缓存可能包含的条目的最大权重。重量 使用与 weighter 指定的 Weigher 确定,并使用 此方法需要在调用之前对称重器进行相应的调用 构建(com.google.common.cache.CacheLoader)。
请注意,缓存可能会在超出此限制之前驱逐条目。 随着缓存大小增长到接近最大值,缓存逐出条目 不太可能再次使用。例如,缓存可能 驱逐一个条目,因为它最近或不经常使用。
当缓存需要驱逐一个条目时,它会考虑权重吗?例如,如果大权重条目的使用频率高于任何小项目,但比所有小项目一起使用的频率低,那么保留多个小权重条目可能比保留一个大权重条目更好。
【问题讨论】:
-
文档现在说“请注意,权重仅用于确定缓存是否超出容量;它对选择下一个应逐出的条目没有影响。” docs.guava-libraries.googlecode.com/git/javadoc/com/google/…