Сборка мусора
Как только определено множество недостижимых объектов, сборщик мусора может освободить память, занимаемую ими, и оставить остальное как есть. Также можно после освобождения памяти переместить все или часть оставшихся объектов в другие области памяти, обновив вместе с этим все ссылки на них. Эти два варианта реализации называются, соответственно, "неперемещающим" и "перемещающим".
Слабая ссылка
В распространённых сейчас языках программирования со сборкой мусора — Java и C#, — слабые ссылки поддерживаются на уровне системных библиотек. В Java для этого служат классы codice_1 и codice_2, в C# — класс codice_3.