Abstract: This paper discusses thread-local garbage collection (GC), a technique of automatic memory management aimed at improving GC throughput and reducing GC pauses in managed runtimes. It exploits the observation that most objects do not escape the scope of the thread allocated them; therefore, memory occupied by these objects can be reclaimed locally within the thread. The question is how to efficiently compute this property at run time while achieving a good tradeoff between the precision of necessary dynamic analysis and the implied overheads for application performance. This paper gives a formal definition of thread-local reachability in the heap graph and proposes several strategies to compute it. Having implemented these strategies in a Java virtual machine, we present results of quantitative evaluation of the amount of thread-local objects discovered with a representative test suite of modern Java applications.