我的应用程序有一个后台服务,它会定期从网上下载信息。根据 MAT(内存分析器),整体内存使用量(保留)为 KB,无论如何,如果我打开 android 的任务管理器,我会看到 13-15 MB。我不知道怎么回事:主应用程序关闭,没有活动在运行,只有服务!
也许是因为在主要活动中我使用 LruCache 缓存位图?但是,理论上,退出这个活动后,应该释放内存......
编辑:这是我的 LruCache 代码,没什么大不了的,只是一个单例,以便每个活动共享缓存内容:
public class PortableCache {
private static final int CACHE_MB = 1;
private static LruCache<String, Bitmap> cachedBitmaps= new LruCache<String,Bitmap>(CACHE_MB*1024*1024){
protected int sizeOf(String k,Bitmap v){
return v.getRowBytes()*v.getHeight();
}
};
public static LruCache<String, Bitmap> getImageCache(){
return cachedBitmaps;
}
}
但是,缓存大小为 1MB,我不认为它是主要责任......
编辑2:奇怪的是,随着时间的推移,服务内存使用量减少了……从现在的 16MB 到 1 小时后,变成了 9MB。