Сборка мусора
Как только определено множество недостижимых объектов, сборщик мусора может освободить память, занимаемую ими, и оставить остальное как есть. Также можно после освобождения памяти переместить все или часть оставшихся объектов в другие области памяти, обновив вместе с этим все ссылки на них. Эти два варианта реализации называются, соответственно, "неперемещающим" и "перемещающим".
Коллекция (программирование)
Коллекция или контейнер группирует некоторое переменное (возможно, нулевое) число элементов данных, которые имеют некоторое общее значение для решения проблемы. Над ними проводятся операции некоторым способом. Обычно элементы данных имеют один и тот же тип или, в языках, поддерживающих наследование, типы будут получены из некоторого общего типа-предка. Коллекция — понятие, применимое к абстрактным типам данных, и не предписывает определённую реализацию через конкретную структуру данных, хотя часто существует устоявшийся выбор. Контейнеры в теории типов — абстракции, которые разрешают коллекциям различных структур, таких как списки и деревья, быть представленными некоторым однородным способом. (Унарный) контейнер определён индексами S и семейством типов на позициях P, индексируемыми через S: задана функция от типов индексов к типу элементов. Контейнеры можно рассматривать как канонические классы для коллекций различных типов. Списки индексируются через натуральные числа (включая ноль). Для списков определён максимальный индекс. Натуральные числа как индексы изоморфны спискам. Для деревьев структура дерева может быть выражена через индексы без конкретной информации о содержимом узлов. Индексы элементов структуры в памяти изоморфны путям от корня дерева до его узлов.В зависимости от того, как логически организован доступ к данным коллекции, выделяются следующие основные типы: