All techniques for automatic memory management boil down to keeping track of which objects are being used by the running program, in other words, which objects are referenced by other objects that are also in use. Objects that are no longer in use may be garbage collected. We will use the terms live and in use interchangeably.
It is hard to exactly place garbage collection techniques in different categories. With the risk of drawing fire from the academic community, we will use the term "tracing garbage collection" for everything except reference counting. Tracing garbage collection means building a graph of live objects at a collection event and discarding unreachable ones. The only other kind of technique that we will cover is reference counting.