Androidの課題の1つは、さまざまなデバイス仕様(特にデバイスメモリ)です。Androidで利用可能なメモリを確認する
モデルオブジェクトをJavaのSoftReferences
を怠惰な負荷で広く使用するために、VMは、データモデルの現在使用されていない部分を自由に整えて、必要に応じて再構成するだけです。
しかし、実際にはSoftReferences
との挑戦の1つは、VMがメモリ不足になるまでぶら下がるのではなく、弱く参照されて数秒以内に消去される傾向があるということです。トリミングすることができますが、それはしばしば何も記憶にないことを意味する点でうまく機能しません。理想的には、メモリが豊富なデバイスでは、オブジェクトをメモリに保存することでメリットを享受できます。
結果として、SoftReferences
をLRUメカニズムと組み合わせることが一般的です。ここで、LRUは最近参照されたオブジェクトにハードポインタを保持します。これは、これらのほとんど参照されないオブジェクトのために十分なメモリがあることを前提としているので、理想的ではありません。
また、LRUにとって適切なデフォルトが何であるかを知ることは難しいことです。完璧な世界では
、Androidは(私はおそらく小さなLRUで開始することができ、かつ低メモリコールバックが Aを見つけるにそれをバックオフその後、発生開始まで定期的にそれをぶつけヒントとしてそれはメモリ不足のコールバックの使用します私の経験では、このコールバックは実際のVMメモリの圧力と決して一致しないようです。
データモデルが特定のデバイスで多すぎるメモリを使用していることを誰かが妥当な方法で検出したことはありますか?
「OutOfMemoryException」をカウントしていますか? https://developer.android.com/training/displaying-bitmaps/cache-bitmap.htmlここで使用される 'memClass'は、(静的に)モデルを拡大縮小する方法です。 – zapl
OutOfMemoryErrorsがスローされ始めたら、あなたは基本的にホースしていると思います。しかし、記事へのリンクありがとう。 –