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是否能够从此地图中索取内存?不使用弱referference(我不是在存储诸如设置或地图等的巢对象...)?
是
来自Guava的Cache.asMap
Javadoc(重点是我的):
返回存储在此缓存中的条目的视图,作为线程安全地图。对地图进行的修改直接影响缓存。
以及从Guava的缓存解释 Wiki页面:
随时您可以明确无效缓存条目,而不是等待条目被驱逐。
您可能需要检查整个Wiki页面,而不是我突出显示的部分。