Как устроен сборщик мусора в Dart
В процессе сборки мусора слой Dart Framework
создает канал взаимодействия со слоем Flutter Engine
, посредством которого узнает о моментах простоя приложения и отсутствия пользовательского взаимодействия. В эти моменты Dart Framework
запускает процесс оптимизации памяти, что позволяет сократить влияния на пользовательский опыт и стабильность приложения.
Сборщик молодого мусора
Используемый объём памяти можно разделить на два пространства: активное и неактивное. Новые объекты располагаются в активной части, где по мере её заполнения, живые объекты переносятся из активной области памяти в неактивную, игнорируя мёртвые объекты. Затем неактивная половина становится активной. Этот процесс имеет цикличный характер.
Сборщик старого мусора (Parallel Marking and Concurrent Sweeping)
- Осуществляется обход дерева объектов, используемые объекты помечаются специальной меткой.
- Во время второго этапа происходит повторный проход по дереву объектов, в ходе которого непомеченные в первом этапе объекты перерабатываются.
- Все метки стираются.
Oct. 13, 2023, Источник