A garbage collection system and method in a multiprocessor environment
having a shared memory wherein two or more processing units participate
in the reclamation of garbage memory objects. The shared memory is
divided into regions or heaps and all heaps are dedicated to one of the
participating processing units. The processing units generally perform
garbage collection operations, i.e., a thread on the heap or heaps that
are dedicated to that the processing unit. However, the processing units
are also allowed to access and modify other memory objects, in other
heaps when those objects are referenced by and therefore may be traced
back to memory objects within the processing units dedicated heap. The
processors are synchronized at rendezvous points to prevent reclamation
of used memory objects.