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 the most of objects does not escape the scope of the thread allocated them, and, therefore, memory occupied by such objects can be reclaimed locally within the thread.
The question is how to efficiently compute this property at run time achieving a good trade-off between precision of the necessary dynamic analysis and the implied overheads for application performance. The paper gives a formal definition of thread-local reachability in heap graph and proposes several strategies to compute it. Implemented these strategies in a Java Virtual Machine, we present the results of quantitative evaluation of amounts of thread-local objects discovered in a representative test suite of modern Java applications.