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等嵌套对象......)?
答案 0 :(得分:3)
来自Guava's Cache.asMap
javadoc(强调我的):
将此缓存中存储的条目视图作为线程安全映射返回。 对地图所做的修改会直接影响缓存。
来自Guava's Cache Explained wiki page:
您可以随时明确地使缓存条目无效,而不是等待条目被驱逐。
您可能需要检查整个Wiki页面,而不是我突出显示的部分。