私は、多くの割り当て (400 万の double と 100 万のクラス) を処理するアプリに取り組んでいます。ガベージ コレクターのログを調べていたところ、さまざまなデバイスでさまざまな量のメモリが解放されていることがわかりました。
たとえば、私は Moto X (2014) を持っていて、最終的に 312 MB 強を解放します。また、同じデータに対して同じコードを実行する Droid Bionic を使用して、平均で 616 MB を解放しています。両方のデバイスのヒープ サイズは約 50 MB になります。
Bionic の GC によって、Moto X よりもはるかに多くのメモリが解放されるのはなぜですか? それぞれ同じ量のガベージを生成する必要があります。ガベージ コレクターの舞台裏で何が起こっているのでしょうか。Moto X は Android 5.1 で、Bionic は 4.1.2 です。
編集: 約 300 MB の RAM を解放している 4 つのデバイスがあります: Moto X (2014)、Nexus 7 2013、Nexus 7 2012、および Razr i。これらの 4 つすべてが ART を使用します。Bionic は Dalvik ランタイムを実行しています。これが解放が少ない理由ですか?GC_FOR_ALLOC は ART では発生しませんが、Dalvik では常に呼び出されていることに気付きました。