Сборщик мусора в Dart. Часть 3: старое поколение
<img src="https://habrastorage.org/getpro/habr/upload_files/a55/056/292/a55056292ed7c195dd55786a7d4482f7.png" /><p>В <a href="https://habr.com/ru/articles/1054356/" rel="noopener nofollow">первой</a> части мы разобрали, как Dart отличает число от объекта, а во <a href="https://habr.com/ru/articles/1066560/" rel="noopener nofollow">второй</a> – как убирается молодое поколение. Там все держалось на одном приеме: живых переносим в соседнее полупространство, а всю старую половину выбрасываем целиком.</p><p><strong>Почему в старом поколении переезд не подходит</strong></p><p>В молодом поколении все было просто – отбрасываем мертвые объекты и забываем про них, в старом поколении все по-другому. Для старого поколения такая операция слишком дорогая. Количество живых объектов больше, чем неживых, а это значит, что нам бы пришлось копировать почти всю память с места на место. Также необходимо было бы держать вторую половину пространства запасам такого же размера как и занятую часть полупространства. Для решения этой проблемы существует mark-sweep (Пометка-очистка).</p> <a href="https://habr.com/ru/articles/1079500/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1079500#habracut">Читать далее</a>
