
Сборщик мусора в Dart. Часть 2: поколения и scavenge
В первой части мы разобрались как Dart отличает число от объекта. Эти знания нам пригодятся, чтобы разобраться в дальнейших хитростях сборщика.Перед нами стоит самый главный вопрос: А как сборщик все-таки за собой убирает? Молодое и старое поколение.Что происходит в обычном build() у Flutter-виджета? За один кадр создается куча временных объектов: EdgeInsets, Padding, промежуточные TextStyle, какие-то списки, замыкания. Живут они до следующего ребилда(Не учитывая const).Также у нас есть и другая категория объектов, которые живут долго: синглтоны, кэши, репозитории, состояние приложения. Они создаются один раз и живут все время работы. Отсюда вывод, если молодые объекты пересоздаются пачками, а старые в основном живут, то убирать их одинаково не выгодно. Именно поэтому Dart делит кучу на 2 поколения... Читать далее