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