Thread-Specific Heaps Bjarne Steensgaard, Microsoft Research In typical multi-threaded programs, many objects never escape the thread that created them. We propose allocating such objects in thread-specific heaps. A key property of such thread-specific heaps is absence of pointers into the heap from objects in other heaps. Objects that cannot be allocated in thread-specific heaps may be allocated in a shared heap. We make a number of observations about thread-specific heaps: 1. Thread-specific heaps can be garbage-collected independent of other thread-specific heaps, and in particular can be garbage-collected concurrently with such heaps. 2. Having thread-specific heaps without cross-pointers is likely to increase locality during garbage collection. 3. Having smaller heaps that can be garbage-collected independently may decrease maximum memory usage for semi-space copying garbage collectors. We report on our experience with thread-specific heaps in Marmot, an ahead-of-time Java-to-native code compiler.