最新版本的优秀番石榴图书馆更新了缓存apis。现在,CacheBuilder拥有一个maxmimumWeight()方法来对高速缓存实施最大权重。 javadoc状态:做番石榴缓存考虑重量在驱逐选择?
指定缓存可能包含的条目的最大权重。重量 使用称重器指定的称重器确定,并且使用 此方法在调用 构建(com.google.common.cache.CacheLoader)之前需要相应调用称重器。
请注意,缓存可能会在超出此限制之前驱逐一个条目。 随着高速缓存大小增加接近最大值,高速缓存将会删除不太可能再次使用的条目 。例如,高速缓存可能会删除一个条目,因为它最近还没有被使用或经常使用。
当Cache需要驱逐一个条目时,它会考虑权重吗?例如,如果重量较大的物品比任何小物品更频繁地使用,但是比所有小物品一起使用的次数少,那么保留几个小重量的物品可能比一个大重量的物品更好。
该文档现在说:“请注意,权重仅用于确定缓存是否超出容量;对选择下一个应该逐出的条目没有影响。” http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/cache/CacheBuilder.html#maximumSize(long) – 2014-02-22 03:14:57