Сколько есть стратегий сборки мусора в программировании?
Сборка мусора
Как только определено множество недостижимых объектов, сборщик мусора может освободить память, занимаемую ими, и оставить остальное как есть. Также можно после освобождения памяти переместить все или часть оставшихся объектов в другие области памяти, обновив вместе с этим все ссылки на них. Эти два варианта реализации называются, соответственно, неперемещающим и перемещающим.
Сопрограмма
Подпрограммы требуют один стек для работы, который может быть выделен в начале выполнения программы.
Сопрограмма же, имеющая возможность вызывать другие сопрограммы одного с ней уровня, лучше реализуется с использованием продолжений. Тогда может потребоваться выделять дополнительные стеки, и поэтому это (в основном) реализуется в высокоуровневых языках с поддержкой сборщика мусора. Создание сопрограмм может быть условно-эффективным только при использовании заранее выделенных стеков и кэшировании ранее созданных.