27

さまざまなモバイル プラットフォームの共通点と相違点を調査しているため、調査中の側面の 1 つはメモリ管理です。そのため、さまざまなメカニズムに関するより詳細な技術情報に興味があります。

具体的には、たとえば、Android が使用するガベージ コレクターの種類はどれですか。
( [Google Groups Discussion]は、「トレース」メカニズムを使用していることを示唆していますが、引用できる可能性のある「より公式な」情報源に加えて、型がプログラマーに与える可能性のある情報を見つけることを望んでいます)。

また、Android 3.0 (Honeycomb) の GC は、複数のプロセッサを利用するために特にどのように調整されたのでしょうか?
[Android デベロッパー ガイド] では、

Android 3.0 は、シングルコアまたはマルチコア プロセッサ アーキテクチャで動作するように設計されたプラットフォームの最初のバージョンです。Dalvik VM、Bionic ライブラリなどのさまざまな変更により、マルチコア環境での対称型マルチプロセッシングのサポートが追加されます。これらの最適化は、シングルスレッドのアプリケーションであっても、すべてのアプリケーションにメリットをもたらします。たとえば、アクティブなコアが 2 つある場合でも、Dalvik ガベージ コレクターが 2 つ目のコアで実行されている場合、シングル スレッド アプリケーションのパフォーマンスが向上する可能性があります。システムはこれを自動的に手配します。」

前と同じように、これを読むには、より技術的な情報を含む情報源を見つけたいと思います。繰り返しますが、開発者への影響は何ですか (パフォーマンスの向上が期待できるという明らかな以外に)?

そのような入力は大歓迎です。

ありがとう!

4

1 に答える 1

27

あなたの質問の 1 つに答えるために、Dalvik VMは実際にトレース ガベージ コレクターを使用し、マーク アンド スイープアプローチを使用します。

The Dalvik Virtual Machine Architectureによると:

Dalvik ガベージ コレクターの現在の戦略は、マーク ビット、つまり特定のオブジェクトが「到達可能」であるためガベージ コレクションの対象にならないことを示すビットを、他のヒープ メモリとは別に保持することです。

Android 5.0 (Lollipop) 以降、Dalvik はAndroid ランタイム (ART)に置き換えられました。

Google は、Dalvik から ART へのガベージ コレクターの変更について次のように述べています( source ) :

改善されたガベージ コレクション

ガベージ コレクション (GC) によってアプリのパフォーマンスが低下し、表示が途切れる、UI の応答性が低下するなどの問題が発生する可能性があります。ART は、いくつかの方法でガベージ コレクションを改善します。

  • 2 回ではなく 1 回の GC 一時停止
  • 残りの GC 一時停止中の並列処理
  • 最近割り当てられた存続期間の短いオブジェクトをクリーンアップするという特殊なケースで、合計 GC 時間が短いコレクター
  • ガベージ コレクションのエルゴノミクスが改善され、同時ガベージ コレクションがよりタイムリーになり、一般的なユース ケースでは GC_FOR_ALLOC イベントが非常にまれになります GC を圧縮してバックグラウンド メモリの使用量と断片化を削減します

以下も参照してください。

于 2011-01-29T13:37:22.727 に答える