1

LRU とディスク キャッシュを使用して、一部の画像をメモリとディスクにキャッシュします。以前私が使用した

private LruCache<String, Bitmap> mMemoryCache;

画像を保存しますが、割り当てスタックを見ると、使用mMemoryCache.get(cs);するたびに新しい文字列オブジェクトが割り当てられるため、多くの文字列割り当てが表示されます。

各ビットマップの描画中に、各フレームで約 50 ~ 100 回キャッシュを使用する必要があり、生きている文字列が短いために多くの GC が発生します。

どうすればこれを防ぐことができますか?

このような文字列の割り当てを防ぐ方法に関する他の質問を見て、デバッグFPSの表示にDavidのソリューションを使用しましたが、この特別なキャッシュバージョンには使用できません.

すべての画像を 100x100 のタイルに分割すると、キャッシュ キーは次のようになりますpageNumber-withcount-heightcount-zoomfactor

a を使用してみましたが、新しい a を割り当てるStringBufferので機能せず、コンテンツを比較する必要があります。「-」の代わりに 000 の int/float を使用することも、キャッシュ クラス内で char[] 配列を使用することもできますが、これを行う最善の方法は何ですか?toString()String

4

1 に答える 1