ハッシュマップはどのくらいのスペースを必要としますか?
これは、バージョン、デバイスなどによって異なる可能性がある実装の詳細です。それを理解し、見積もりのみを探す限り、実際には非常に簡単に測定できます。Android SDK には、メモリ分析ツールの強力なスイートが含まれています。Eclipse MAT (私の目には最高のもの) をチェックしてください。ハッシュマップが完全に読み込まれたときにヒープ スナップショットを取得し、MAT を使用して必要なバイト数を確認できます。ハッシュ自体、キー、および値の両方を必ず合計してください (私の記憶が正しければ、MAT も計算を実行できます (コア コレクションを非常にうまく処理できます)。
dalvik は割り当てることができますか?
議論のために、ハッシュマップが 1MB のメモリを必要とするとしましょう。それが多いかどうかを感じるには、私たちが住んでいるシステムの制約を理解する必要があります。Dalvik はヒープの最大サイズを制限します。制限はデバイスごとに異なります。非常に古いデバイスの最小値は 16MB です。Samsung Galaxy 2 などのデバイスには約 32MB ~ 48MB があり、Galaxy 3 や 4 などの新しいデバイスには 100MB 以上あります。
アプリで最もメモリを消費するのは通常、ビットマップです。すべてのピクセルは 4 バイトも使用できるため、フルスクリーンのビットマップは簡単に数 MB のメモリを消費します。
これを念頭に置いて、1MB の使用料は悪くないように思えます。これは、素敵な背景画像を使用することに匹敵します:)全体的なメモリ使用量が少ない場合は、必要に応じて分散できます。メモリ分析ツール (MAT または DDMS) を使用すると、アプリが現在使用しているメモリの量を正確に把握できるため、総消費量を簡単に見積もることができます。
他の考え:
通常、パフォーマンスを向上させるためにメモリにキャッシュすることをお勧めします。したがって、あなたのアプローチは私の目には良いものです(メモリの意味を理解している限り)。
メモリハッシュマップは最適化のみであるため、特に注意して、メモリに余裕がある場合にのみ実行してください。利用可能なヒープの量を簡単に測定し (そのための API です)、それに応じて決定を下すことができます。メモリ不足の通知イベントを聞くことができます(それらについてはグーグル)。また、失敗した割り当ての OutOfMemoryError 例外をキャッチして、実行時にメモリ戦略を変更することもできます。
あなたは正確な測定が難しい分野で遊んでいます。複数のデバイスと Android の複数のバージョンで必ず QA を行ってください。低メモリ設定をシミュレートするには、見つけられる最も古いデバイスを使用してみてください。