19

私のアプリケーションは、これらの恐ろしい GC_FOR_ALLOC を特定の場所 (メソッド) で何度も発生させています。

12-29 22:20:30.229: D/dalvikvm(10592): GC_FOR_ALLOC freed 1105K, 14% free 10933K/12615K, paused 33ms, total 34ms
12-29 22:20:30.260: D/dalvikvm(10592): GC_FOR_ALLOC freed 337K, 13% free 11055K/12615K, paused 25ms, total 26ms
12-29 22:20:30.288: D/dalvikvm(10592): GC_FOR_ALLOC freed 278K, 14% free 10951K/12615K, paused 24ms, total 24ms
12-29 22:20:30.495: D/dalvikvm(10592): GC_CONCURRENT freed 633K, 11% free 11317K/12615K, paused 16ms+3ms, total 79ms
12-29 22:20:30.495: D/dalvikvm(10592): WAIT_FOR_CONCURRENT_GC blocked 16ms
12-29 22:20:30.499: D/dalvikvm(10592): WAIT_FOR_CONCURRENT_GC blocked 15ms

メモリ管理に関して何か間違ったことをしていることは明らかです(はい、ガベージコレクションは素晴らしいですが、いつ、どのように割り当てるかを知る責任から解放されません)。

問題のあるコード行と可能な解決策につながる可能性のあるトラブルシューティングのアプローチまたは手法をお勧めできますか?

4

1 に答える 1

55

Eclipse の Android 開発ツールの一部である Android DDMS には、プロファイリングとメモリ割り当ての追跡に使用できる非常に便利なツールがあります。

以下のスクリーンショットでは、これらのツールの一部 (すべて DDMS の下) が強調表示されています。一部のツールは、左側のパネルの対応するボタン (赤で強調表示) をクリックしてアクティブにする必要があり、右側のパネルで値 (一部はグラフ付き) を確認できます。見たいタブを選択する (青色で強調表示)

Heap and Allocation Tracker は、あなたの場合に非常に役立ちます。

プロファイリングとメモリ割り当てツールを示すEclipseのスクリーンショット

于 2012-12-30T04:18:12.553 に答える