z-chu / RxCache

简单一步,缓存搞定。这是一个专用于 RxJava,解决 Android 中对任何 Observable 发出的结果做缓存处理的框架

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

内存缓存会膨胀

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