Dart использует однопоточный сборщик мусора, основанный на поколенческой сборке (generational garbage collection).
Ключевые особенности:
- Generational Collection: Объекты делятся на два поколения:
- Young generation: Новые, короткоживущие объекты. Собираются часто.
- Old generation: Долгоживущие объекты, пережившие несколько сборок в молодом поколении. Собираются реже.
- Stop-the-World: Для выполнения сборки мусора требуется приостанавливать выполнение программы (Dart Isolates). Однако, благодаря однопоточности и оптимизациям, задержки минимизируются.
- Mark-and-Sweep: В старом поколении используется алгоритм Mark-and-Sweep. Сначала помечаются достижимые объекты, затем удаляются недостижимые. Для молодого поколения используется алгоритм Copying Collector, который быстро перемещает живые объекты в другое пространство памяти.
- **Нет циклов сборки мусора