0

私が書いている単純なアプリの場合、logcatは次のGC_FOR_MALLOCような多くのメッセージをスパムします。

D/dalvikvm(10236): GC_FOR_MALLOC freed 224K, 51% free 3290K/6599K, external 0K/0K, paused 21ms
D/dalvikvm(10236): GC_FOR_MALLOC freed 290K, 50% free 3323K/6599K, external 0K/0K, paused 33ms
D/dalvikvm(10236): GC_FOR_MALLOC freed 229K, 50% free 3325K/6599K, external 0K/0K, paused 24ms

このアプリはそれほど多くはなく、ApacheHttpClient4.Xを使用してhttps経由で2つのHTMLドキュメントをロードするだけです。私はすでに定義android:largeHeap="true"しましたが、それは役に立ちません。

メッセージから、50%のメモリが空いていると読みましたが、GCはとにかく実行を余儀なくされています。これが発生する理由と、これを修正する方法を知っていますか?ありがとう。

4

1 に答える 1

2

おそらくあなたのコードに何か問題があります。コードが提供されていないので、一般的な答えを出します。

それぞれで約250Kがリリースされたことを通知する500のメッセージがある場合、コードが合計125MBを割り当て/リリースしたことを意味します。

これは、通常、この量のメモリを必要としない一般的なhtmlページでは発生しないはずです。

アプリケーションによって繰り返し作成/リリースされているオブジェクトを特定し、新しいオブジェクトを作成する代わりにそれらを再利用する必要があります。

EclipseではDDMS、そのためのタブを使用できます。プロセスを選択し、に移動して、Allocation Trackerを押しStart Trackingて、割り当てられているオブジェクトを取得します。

よろしく。

于 2012-11-12T00:13:33.787 に答える