Thread-specific heaps are employed in multithreaded programs to decrease
garbage collection latency in such programs. Program data in a target
program is analyzed to identify thread-specific data and shared data.
Thread-specific data is identified on the basis that the thread-specific
data is determined to be reachable only from a single program thread of
the target program. Each program thread can be associated with an
individual thread-specific heap. Shared data is identified on the basis
that the shared data is potentially reachable from a plurality of program
threads of the target program. An exemplary method of identifying such
data is referred to as a thread escape analysis. Garbage collection of
such heaps may be performed independently or with minimal
synchronization. Remembered sets may also be used to increase the
independence of collection of individual heaps and to decrease garbage
collection latency.