0

512MBのRAMと32/64/128/256/512のヒープスペースを備えたAndroid2.3.3に基づく新しいAndroidエミュレーターを作成しました。

しかし、次のパッケージをインストールしようとすると、常に同じ問題が発生しますadb install

D/dalvikvm(  341): GC_CONCURRENT freed 429K, 41% free 3445K/5767K,
external 716K/1038K, paused 5ms+2ms

これを1秒間に2回取得すると、エミュレーターはすべてのシステムリソース(CPUとRAM)を使い果たしました。では、ヒープ割り当てのどこかにバグがありますか?または、値を65535のような異常な高さに設定する必要がありますか?このLogoutputは、パッケージをインストールしようとしたときにのみ開始されるようです。

編集:もう少し明確に指定します。config.iniファイルに入力する値は関係ありません。いずれの場合も、上記のGCメッセージからvm.heapSize同じメモリ値を取得します。5767Kしたがって、これは本当にエミュレータのバグです!また、何もプログラムしていません。エミュレータを起動して実行する必要があります。

4

2 に答える 2

0

それはあなたが得ているバグではありません。Androidは、要件に従ってガベージデータを収集しています。同じことの詳細については、このリンクを参照してください。

ありがとうございました。

于 2012-08-28T08:43:24.370 に答える
0

あなたは少し間違ったことを理解していると思います-5767K量はヒープの現在のサイズであり、変更しているヒープの最大サイズではありません。

Android GCは非常に積極的です。つまり、新しいオブジェクトが作成されると、GCは通常、ヒープサイズを増やすよりも、古いオブジェクトをクリーンアップして空き領域を増やすことを優先します。これは、ここで見られる動作です。最大ヒープをどのサイズに設定しても、GCは常に古いメモリを解放できるため、実行していることを実行してもヒープに到達しません。これが実行されます。

を割り当て続けるプログラムを作成してみて(そして、GCがそれらを収集できないように、作成するBitmapすべてのsへの参照を保持するようにしてください)、ヒープがどれだけ大きくなるかを確認してください。Bitmap

デバイスのGCは少し攻撃的ではないかもしれませんが、おそらく同様に調整されます。

于 2012-08-29T14:57:06.257 に答える