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 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.