This paper describes several design patterns found in garbage collectors. The patterns we present are divided into two groups. The first group are two new design patterns: Rootset and TriColour that have been used in the garbage collection domain for up to 20 years. The second group of patterns are reported in the GoF book, such as Adapter, Facade, Iterator and Proxy,but we examine their use in the garbage collection domain. These patterns can be used by language implementers to provide a less efficient, but simpler and more flexible way of implementing and reusing garbage collectors in programming languages than current low-level and nonportable methods.