2012-07-17 29 views
19

我只是我的Android手機上的確從ICS(4.0.4)到JB(4.1)的自動更新,當我跑我的應用程序它推出了多個垃圾收集電話:WAIT_FOR_CONCURRENT_GC阻止了什麼意思?

WAIT_FOR_CONCURRENT_GC blocked 30ms 

我在流媒體視頻我的應用和這些封鎖的GC呼叫幾乎是我的延遲時間的兩倍,這是什麼意思?

回答

31

該消息發出在幾個情況:

  • 當用戶代碼明確要求GC()和GC已在進行中。
  • 當代碼嘗試執行分配但實際上沒有空間容納請求時,並且gc已在進行中。

在任何一種情況下,發生的情況是,爲了滿足請求,第一步是等待另一個線程中發生的熱垃圾收集操作。一旦完成,那麼線程可以轉移到更直接要求做的事情上(這可能會導致進一步的垃圾收集)。

您可以在platform/dalvik/vm/alloc中找到顯着的來源,特別是Heap.cpp和Alloc.cpp。所有這一切說,我不能告訴你爲什麼你會看到JB比ICS更多的停頓。

+0

我通過您的網站地址向您發送了一封電子郵件,但我不確定您是否收到它,您能檢查它嗎? – 2013-04-20 16:58:10

17

這次我們沒有登錄JB。您的應用程序的線程始終不得不阻止等待任何併發GC完成才能完成集合,但是JB是第一個可以在其中執行任務時看到的版本,並且您可以在哪裏看到需要等待多長時間。