5

ガベージコレクターが呼び出されると、Androidアプリケーションがソフトリアルタイムタスクを時間内にうまく実行できない状況があります。これには数ミリ秒かかります。GCに与えられた数ミリ秒の時間は、IOデバイスからデータを読み取る小さなタスクのいくつかの重要な期限を逃すには不十分です。

別のスレッドを導入して、重要なデータをポーリングするタスクを与えることを考えていました。ただし、GCがすべてのスレッドを一時停止するのか、それともメモリを大量に消費するスレッドだけを一時停止するのかわかりません。

4

1 に答える 1

9

Patrick DubroyによるAndroidアプリのメモリ管理で、次のことがわかりました(スライド16、強調鉱山)。

  • プレジンジャーブレッドGC:

    • ストップザワールド

    • フルヒープコレクション

    • 多くの場合、一時停止時間は100ミリ秒を超えます

  • ジンジャーブレッド以降:

    • 同時(ほとんど)

    • 部分的なコレクション

    • 通常、一時停止時間は5ミリ秒未満です

一般に、ガベージコレクションはVM全体を停止する必要がありますが、最近では大幅に削減されています。ただし、VMもAndroidプラットフォームも全体としてリアルタイムオペレーティングシステムではないため、このような厳密な保証は期待しないでください。

なぜ1ミリ秒の精度が必要なのですか?

于 2012-12-01T09:00:01.560 に答える