メモリの解放に問題があります。をHashmap
追加しているBitmap
があり、ビットマップの数が非常に多いです。このため、私は取得してOutOfMemoryError
います。そのため、メモリ クランチまたはシステムのヒープ メモリが少なくなったときに、Bitmap
最も使用されていないものをリリースすることにしました。Collection
現在使用可能なメモリを取得するために、「ActivityManager.MemoryInfo.availMem」を使用しましたが、使用可能なヒープ メモリではなく、合計 RAM サイズのメモリが得られます。そして、コレクションからビットマップを解放すると、このメモリが更新されないことがわかりました。
次に、次の 3 つの方法を使用しました。
Debug.getNativeHeapAllocatedSize()
Debug.getNativeHeapFreeSize()
Debug.getNativeHeapSize()
しかし、NativeHeapSize が特定のレベル (たとえば 16 MB) まで増加し続け、その後変化することがわかりましたOutOfMemoryError
。これも、から解放してもNativeHeapAllocatedSize
とが減っていないことがわかりました。getNativeHeapSize
Bitmap
Collection
この問題を解決するにはどうすればよいですか?
私の問題は、現在使用可能なメモリがしきい値メモリを超えた場合にBitmap
、コレクションから一部を解放し、ガベージ コレクションがメモリを再利用して、メモリを生成せずに解放するように、割り当てられた使用可能な最大アプリケーション メモリと現在使用可能なメモリを計算したいことです。エラー。