のサイズを計算するために使用できる数式はありLruCache
ますか? が提供する VM メモリの統計情報に基づいて計算できますかRuntime.getRuntime()
。
私はビットマップファイルを保存しています - ファイルデータであり、解凍されたビットマップではありません。
のサイズを計算するために使用できる数式はありLruCache
ますか? が提供する VM メモリの統計情報に基づいて計算できますかRuntime.getRuntime()
。
私はビットマップファイルを保存しています - ファイルデータであり、解凍されたビットマップではありません。
以下は、キャッシュ ビットマップガイドからの抜粋です。
// Get memory class of this device, exceeding this amount will throw an
// OutOfMemory exception.
final int memClass = ((ActivityManager) context.getSystemService(
Context.ACTIVITY_SERVICE)).getMemoryClass();
// Use 1/8th of the available memory for this memory cache.
final int cacheSize = 1024 * 1024 * memClass / 8;
あなたは自分の問題について間違った方法で考えています。キャッシュを使用可能なメモリに合わせようとする代わりに、メモリがダウンしたときにシステムにキャッシュから何かを削除させる必要があります。そして、それがソフト参照の目的です。
Google のMapMakerのようなソフト参照に基づくキャッシュ用の Java 実装がいくつか利用可能ですが、それらのライブラリがどれだけのフットプリントをもたらすか、また Android での自作の実装に適しているかどうかはわかりません。