Android のガベージ コレクターについて、矛盾する情報をいくつか見つけました。
Android 開発者ガイド 言います:
Android 3.0 は、シングルコアまたはマルチコア プロセッサ アーキテクチャで動作するように設計されたプラットフォームの最初のバージョンです。Dalvik VM、Bionic ライブラリなどのさまざまな変更により、マルチコア環境での対称型マルチプロセッシングのサポートが追加されます。これらの最適化は、シングルスレッドのアプリケーションであっても、すべてのアプリケーションにメリットをもたらします。たとえば、アクティブなコアが 2 つある場合でも、Dalvik ガベージ コレクターが 2 つ目のコアで実行されている場合、シングル スレッド アプリケーションのパフォーマンスが向上する可能性があります。システムはこれを自動的に手配します。」
さて、他のこと
このリンクによると: Dalvik 仮想マシン アーキテクチャ アンドロイドは、マーク アンド スイープ アプローチを使用します。
Dalvik ガベージ コレクターの現在の戦略は、マーク ビット、つまり特定のオブジェクトが「到達可能」であるためガベージ コレクションの対象にならないことを示すビットを、他のヒープ メモリとは別に保持することです。
このリンクでマークとスイープがどのように機能するかを確認すると: マークとスイープ ガベージ コレクション アルゴリズム 、次のことがわかります。
マーク アンド スイープ アプローチの主な欠点は、ガベージ コレクション アルゴリズムの実行中に通常のプログラムの実行が中断されることです。特に、人間のユーザーと対話するプログラムや、リアルタイム実行の制約を満たす必要があるプログラムでは、これが問題になる可能性があります。たとえば、マーク アンド スイープ ガベージ コレクションを使用する対話型アプリケーションは、定期的に応答しなくなります。
だから私の質問は、それが実際にどのように機能するのかということです. ガベージ コレクターは、作業中にすべてを一時停止しますか? それとも、他のアクティブなプロセッサ コアとは完全に独立して実行できますか?