当删除密钥时,Guava Map Cache会缩小

时间:2017-12-12 22:05:41

标签: garbage-collection guava

private Cache<Object, String> cache = CacheBuilder.newBuilder()
        .concurrencyLevel(4)
        .expireAfterAccess(24, TimeUnit.HOURS)
        .initialCapacity(1024)
        .maximumSize(1_00_000)
        .build();
private ConcurrentMap<Object, String> cacheMap = cache.asMap();

这是我的代码,它很简单,它只是创建一个Guava地图缓存。 问题是,如果我从此地图中删除()键,那么GC是否可以从此地图中获取内存?不使用weakReference(我不存储像Set或Map等嵌套对象......)?

1 个答案:

答案 0 :(得分:3)

来自Guava's Cache.asMap javadoc(强调我的):

  

将此缓存中存储的条目视图作为线程安全映射返回。 对地图所做的修改会直接影响缓存。

来自Guava's Cache Explained wiki page

  

您可以随时明确地使缓存条目无效,而不是等待条目被驱逐。

您可能需要检查整个Wiki页面,而不是我突出显示的部分。