AndroidフォンでICS(4.0.4)からJB(4.1)に自動更新したところ、アプリを実行すると複数のガベージコレクション呼び出しが発生しました。
WAIT_FOR_CONCURRENT_GC blocked 30ms
アプリでビデオをストリーミングしていますが、これらのブロックされたGC呼び出しにより、レイテンシーがほぼ2倍になります。どういう意味ですか?
AndroidフォンでICS(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は、コレクションを実行するタイミングと、待機する必要がある時間を確認できる最初のリリースです。