内存缓存会膨胀
luckyshane opened this issue · comments
LruMemoryCache内部存放大小以及插入时间的辅助Map,并不会在存实际数据的LruCache清除无效数据后进行清除,会无限制增长。
private LruCache<String, Object> mCache;
private HashMap<String, Integer> memorySizeMap;//储存初次加入缓存的size,规避对象在内存中大小变化造成的测量出错
private HashMap<String, Long> timestampMap;
public <T> boolean save(String key, T value) {
if (null != value) {
memorySizeMap.put(key, (int) countSize(value));
mCache.put(key, value);
timestampMap.put(key, System.currentTimeMillis());
}
return true;
}
解决办法:重写LruCache的entryRemoved方法,在这里分别对memorySizeMap和timestampMap进行移除对应的key