Automatic storage reclamation via reference counting has important advantages, but has always suffered from a major weakness
due to its inability to reclaim cyclic data structures.
We describe a novel cycle collection algorithm that is both concurrent — it is capable of collecting garbage even in the presence of simultaneous mutation — and localized—it never needs to perform a global search of the entire data space. We describe our algorithm in detail and present a proof
of correctness. We have implemented our algorithm in the Jalapeño Java virtual machine as part of the Recycler, a concurrent
multiprocessor reference counting garbage collector that achieves maximum mutator pause times of only 6 milliseconds. We present
measurements of the behavior of the cycle collection algorithm over a set of eight benchmarks that demonstrate the effectiveness
of the algorithm at finding garbage cycles, handling concurrent mutation, and eliminating global tracing.