Ответ
Да, у сборщика мусора (GC) в Android есть приоритеты. Он использует generational garbage collection, разделяя объекты на поколения:
- Young generation – краткоживущие объекты (например, локальные переменные). Собираются часто (Minor GC).
- Old generation – долгоживущие объекты. Собираются реже (Major GC).
- Permanent generation – метаданные классов (в ART заменен на метапространство).
Приоритеты:
- GC старается минимизировать паузы (stop-the-world), особенно в основном потоке.
- Объекты с
SoftReferenceудаляются передOutOfMemoryError. WeakReferenceиPhantomReferenceимеют более высокий приоритет на удаление.
Пример:
val weakRef = WeakReference(MyObject())
// GC удалит MyObject при нехватке памяти