Another method of managing Lisp storage involves reference counting. Conceptually, within each cons cell there is room for a small counter that counts the number of pointers which point to that cell. Each time another pointer to the cell is constructed, the counter is incremented by one. Each time a pointer is moved away from the cell, the counter is decremented by one.
Whenever the reference count of a cell becomes zero, the cell is garbage and may be added to the Free List. In addition, the reference counts of whatever its pointers point to must also be decremented, possibly resulting in additional garbage.