Подтвердить что ты не робот

Технические детали Android Garbage Collector

Как я делаю исследование об общих чертах/различиях различных мобильных платформ, одним из рассматриваемых аспектов является управление памятью. Таким образом, меня интересует более подробная техническая информация о различных механизмах.

В частности, например, , какой тип сборщика мусора использует Android?
([Обсуждение в группах Google] предполагает, что он использует механизм отслеживания, но я бы оценил "более официальный" источник, который я мог бы процитировать, а также надеяться на найти информацию, которая может повлиять на тип программиста).

Также среди моих вопросов есть , каким образом GC в Android 3.0 (Honeycomb) был специально настроен для использования нескольких процессоров?
[Android Devevelopers Guide] предполагает, что

Android 3.0 - это первая версия платформы, предназначенная для работы на одном или нескольких процессорных архитектурах. Различные изменения в VM Dalvik, библиотеке Bionic и других местах обеспечивают поддержку симметричной многопроцессорности в многоядерных средах. Эти оптимизации могут принести пользу всем приложениям, даже однопоточным. Например, с двумя активными ядрами однопоточное приложение может по-прежнему видеть повышение производительности, если сборщик мусора Dalvik работает на втором ядре. Система автоматически установит это. "

Как и прежде, я бы предпочел найти источник с дополнительной технической информацией, чтобы прочитать об этом. Опять же, какое влияние на разработчика (за исключением очевидного, что можно ожидать увеличения производительности)?

Любой такой ввод оценивается.

Спасибо!

4b9b3361

Ответ 1

Чтобы ответить на один из ваших вопросов, Dalvik VM действительно использует трассировочный сборщик мусора, используя Пометить и развернуть.

Согласно Архитектура виртуальной машины Dalvik:

Текущая стратегия в сборщике мусора Dalvik заключается в том, чтобы сохранить метки бит, или биты, указывающие, что конкретный объект "доступен" и поэтому не следует собирать мусор, отдельно от другой памяти кучи.

С Android 5.0 (Lollipop) и дальше Dalvik был заменен на Android Runtime (ART).

Google может сказать об изменениях в сборщике мусора из Dalvik в ART (source):

Улучшенная сборка мусора

Сбор мусора (GC) может ухудшить производительность приложения, в результате чего изменчивый дисплей, плохой отзывчивость пользовательского интерфейса и другие проблемы. ИЗОБРАЗИТЕЛЬНОЕ ИСКУССТВО улучшает сбор мусора несколькими способами:

  • Одна пауза GC вместо двух
  • Параллельная обработка во время оставшейся паузы GC
  • Коллекционер с более низким общим временем GC для специального случая очистки недавно выделенных короткоживущих объектов
  • Улучшена эргономика сбора мусора, что делает сборку сборщиков мусора более актуальной, что делает события GC_FOR_ALLOC чрезвычайно редкий в типичных случаях использования Уплотнение GC для уменьшения использования и фрагментации фоновой памяти.

См. также: