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