В простой системе сбора мусора никто не будет держать прямой указатель на какой-либо объект; вместо этого код будет содержать ссылки на записи таблицы, которые указывают на объекты в куче. Каждый объект в куче будет хранить свой размер (то есть все объекты кучи будут формировать односвязный список) и обратную ссылку на объект в таблице объектов, в которой он хранится (или, по крайней мере, используется).
Когда заполнится куча или таблица объектов, система установит флаг «удалить меня» для каждого объекта в таблице. Он будет проверять каждый объект, о котором он знает, и, если был установлен его «флаг удаления», сбросить его и добавить все объекты, о которых он знает, в список объектов, которые будут проверены. Как только это будет сделано, любой объект, чей флаг «удалить меня» все еще установлен, может быть удален.
Как только это будет сделано, система запустится в начале кучи, возьмет каждый сохраненный там объект и проверит, указывает ли на него ссылка на объект. Если это так, он скопирует этот объект в начало кучи или сразу после конца последнего скопированного объекта; в противном случае объект будет пропущен (и, вероятно, будет перезаписан при копировании других объектов).