番石榴缓存的最大尺寸为1

时间:2016-02-07 05:17:50

标签: guava

使用最大尺寸为1的番石榴缓存是否可以?

我读到有时甚至在达到最大尺寸之前就有可能被驱逐。

但是,我只需要一个缓存条目。因此,我想知道为最大尺寸设定哪个值是安全的,但不是过多。

1 个答案:

答案 0 :(得分:1)

您应该能够按照Cache.cleanUp()中的说明使用When Does Cleanup Happen?并测试最大尺寸是否符合您的需求。

e.g。以下显示使用最大大小为1的final LoadingCache<Character, Integer> loadingCache = CacheBuilder.newBuilder() .maximumSize(1) .build(new CacheLoader<Object, Integer>() { private final AtomicInteger loadInvocationCount = new AtomicInteger(); @Override public Integer load(Object key) throws Exception { return loadInvocationCount.getAndIncrement(); } }); assert loadingCache.size() == 0; assert loadingCache.getUnchecked('a') == 0; assert loadingCache.size() == 1; loadingCache.cleanUp(); assert loadingCache.size() == 1; assert loadingCache.getUnchecked('a') == 0; assert loadingCache.size() == 1; assert loadingCache.getUnchecked('b') == 1; assert loadingCache.size() == 1; loadingCache.cleanUp(); assert loadingCache.size() == 1; assert loadingCache.getUnchecked('a') == 2; assert loadingCache.size() == 1; loadingCache.cleanUp(); assert loadingCache.size() == 1; 将不会驱逐现有条目,直到加载不同的条目取代它:

LoadingCache

请注意,这可能特定于正在构建的while (x < 10 && y < 20){ 类型,因此您需要测试您计划使用的任何配置。