私のアプリには、ネットから情報を定期的にダウンロードするバックグラウンド サービスがあります。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のキャッシュサイズでは、それが主な原因ではないと思います...
edit2:不思議なことに、時間が経つにつれてサービスのメモリ使用量が減少します...現在16MBから、1時間後には9MBです。