ICS電話でAndroid(4.0.4)からJB(4.1)に自動更新しましたが、実行時に複数のガベージコレクション呼び出しが発生しました私のアプリ:
WAIT_FOR_CONCURRENT_GC blocked 30ms
アプリでビデオをストリーミングしていますが、これらのブロックされたGC呼び出しにより、待ち時間がほぼ2倍になります。どういう意味ですか?
そのメッセージは、いくつかの場合に発行されます。
いずれの場合も、要求を満たすために、最初のステップは別のスレッドで実行されているホットガベージコレクションアクションを待機しているということです。それが完了すると、スレッドはより直接要求されたものに移動できます(これによりさらにガベージコレクションが発生する可能性があります)。
顕著なソースは、platform/dalvik/vm/alloc、特にHeap.cppとAlloc.cppにあります。
とはいえ、ICSよりもJBの方が一時停止が多い理由はわかりません。
今回はJBの前にログを記録しませんでした。アプリのスレッドは、コレクションを実行する前に、並行GCが完了するのを待つことを常にブロックする必要がありましたが、JBは、コレクションを実行するタイミングと、待機する必要がある時間を確認できる最初のリリースです。