我正在缓存图像以更快地从网络共享和/或互联网下载。目前,这个缓存在内存中。
是否可以通过对象的深度大小(初步BufferedImageSize
)来限制缓存?
缓存初始化如下
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
....
imageCache = CacheBuilder.newBuilder()
.maximumSize(cacheSize)
.expireAfterWrite(10, TimeUnit.MINUTES)
.build(
new CacheLoader<String, DeferredImage>() {
public DeferredImage load(String pathname) throws IOException {
return new DeferredImage(pathname);
}
});
DeferredImage
包装器在哪里,BufferedImage
以方便在单独的线程中加载。
是否可以编写一些大小检查,它考虑的不是缓存中的条目数,而是它们的字节大小?
更新
我找到了 maximumWeight() 方法,但不明白这是否是我正在寻找的:文档无处说明,计算权重的总和。