Ответ 1
Это сообщение выдается в нескольких случаях:
- когда код пользователя явно вызывает gc(), а gc уже выполняется.
- когда код пытается выполнить выделение, но на самом деле нет места в памяти для размещения запроса, а gc уже выполняется.
В любом случае, что происходит, чтобы удовлетворить запрос, первый шаг ожидает действия по сбору горячего мусора, которое происходит в другом потоке. Как только это будет сделано, поток может перейти на то, что было запрошено более прямо (что может вызвать дополнительную сборку мусора).
Вы можете найти основные источники в платформе /dalvik/vm/alloc, особенно Heap.cpp и Alloc.cpp.
Все, что сказал, я не могу сказать вам, почему вы видите больше пауз в JB, чем в ICS.