使用Guava CacheBuilder/MapMaker计算自定义缓存大小

Rup*_*tes 2 java guava

我想知道目前是否有一种方法可以使用Guava MapMaker或者是一种使用CacheBuilder的方法,以提供计算缓存是否在最大大小范围内的函数?

看起来当前驱逐仅仅基于缓存中的元素数量与.maximumSize()值相比,但是我想将结果映射用作位图的缓存,其可以包含非常小或非常大的条目.因此,我希望能够提供一个函数,该函数根据正在使用的内存条数量来计算缓存大小,然后允许缓存在此基础上逐出.

Kev*_*ion 5

我们目前只有maximumSize(int),但正在评估需要maximumWeight(int, Weigher<K, V>)(在那种类型只有一个weigh(K, V)方法返回intdouble).你仍然需要提出重量应该是什么.

当然,这个功能不会在一夜之间出现.