Garbage Collection Schemes for Shared Memory Multiprocessors