Androidにはどのような種類のガベージコレクターが実装されていますか?これらのGCのパフォーマンスはどのように評価されますか?評価で使用された(または使用されることになっている)アプリは何ですか?
また、ベンダーはデバイスに使用するGCの種類をどのように決定しますか?
Androidにはどのような種類のガベージコレクターが実装されていますか?これらのGCのパフォーマンスはどのように評価されますか?評価で使用された(または使用されることになっている)アプリは何ですか?
また、ベンダーはデバイスに使用するGCの種類をどのように決定しますか?
質問の1つに答えるために、Dalvik VMは、マークアンドスイープアプローチを使用して、トレースガベージコレクターを実際に使用します。
Dalvik仮想マシンアーキテクチャによると:
Dalvikガベージコレクターの現在の戦略は、マークビット、または特定のオブジェクトが「到達可能」であり、したがって他のヒープメモリとは別にガベージコレクションされるべきではないことを示すビットを保持することです。
参照:
Android での DVM とガベージ コレクションに関する詳細情報 ( source ):
[各] アプリは独自のプロセスを取得し、独自の VM を実行します。そのため、アプリが GC を実行する必要があるようなことを行っている場合、これによって自分のプロセスの VM がブロックされることはありません。(また、独自のプロセスが GC を実行する場合でも、VM にアタッチされていないネイティブ スレッドをそのプロセスで簡単に実行できるため、VM の動作によってブロックされることはありません。) プロセス間のこの種の対話は管理されます。ほぼ完全にカーネルのスケジューラによって行われ、Android はかなりの量の処理 (バックグラウンド cgroup とフォアグラウンド cgroup の使用など) を行って、スケジューラがバックグラウンド アプリによる作業がフォアグラウンド アプリの実行に影響を与えないようにします。