Я нашел некоторую информацию об сборщике мусора Android, которые противоречат мне.
В руководстве Android Devevelopers сказано:
Android 3.0 - первая версия платформы, предназначенная для запуска либо одноядерные, либо многоядерные архитектуры процессоров. Разнообразие изменения в Dalvik VM, Bionic library и в других местах добавляют поддержку для симметричной многопроцессорности в многоядерных средах. Эти оптимизация может принести пользу всем приложениям, даже тем, которые однопоточный. Например, с двумя активными сердечниками однопоточный приложение может по-прежнему видеть повышение производительности, если мусор Dalvik коллектор работает на втором ядре. Система обеспечит это автоматически ".
Хорошо, теперь другая вещь
Согласно этой ссылке: Архитектура виртуальной машины Dalvik андроид использует маркер и развертку aproach.
Текущая стратегия в сборщике мусора Dalvik заключается в том, чтобы сохранить отметку бит или биты, указывающие, что конкретный объект "достижимый", и поэтому не следует собирать мусор, разделить из другой памяти кучи.
Если мы проверим, как эта метка и развертка работают по этой ссылке: Отметить и отладить алгоритм сбора мусора , мы можем видеть это:
Основным недостатком подхода mark-and-sweep является тот факт, что что обычное выполнение программы приостанавливается, пока мусор выполняется алгоритм сбора. В частности, это может быть проблемой в программа, которая взаимодействует с пользователем пользователя или которая должна удовлетворять ограничения выполнения в реальном времени. Например, интерактивный приложение, использующее сбор мусора маркировки и очистки периодически не реагирует.
Итак, теперь мой вопрос: как это работает? Собирает ли сборщик мусора все, пока он работает, или он может работать полностью независимо от другого активного ядра процессора?