Summary: Andrew W. Appel 3
Department of Computer Science
Princeton, NJ 08544
Keywords: garbage collection, dynamic memory allocation, concurrency
In a programming environment with both concurrency and automatic
garbage collection, the allocation and initialization of a new record is
a sensitive matter: if it is interrupted halfway through, the allocating
3 Supported in part by NSF Grants DCR8603453 and CCR8806121 and by a Digital
Equipment Corp. Faculty Incentive Grant
process may be in a state that the garbage collector can't understand. In
particular, the collector won't know which words of the new record have
been initialized and which are meaningless (and unsafe to traverse).
For this reason, parallel implementations usually use a locking or
semaphore mechanism to ensure that allocation is an atomic operation.
The locking significantly adds to the cost of allocation. This paper shows