A multiprocessor, multi-program, stop-the-world garbage collection program
is described. The system initially over partitions the root sources, and
then iteratively employs static and dynamic work balancing. Garbage
collection threads compete dynamically for the initial partitions. Work
stealing double-ended queues, where contention is reduced, are described
to provide dynamic load balancing among the threads. Contention is
resolved by using atomic instructions. The heap is broken into a young and
an old generation where parallel semi-space copying is used to collect the
young generation and parallel mark-compacting the old generation. Speed
and efficiency of collection is enhanced by use of card tables and linking
objects, and overflow conditions are efficiently handled by linking using
class pointers. A garbage collection termination employs a global status
word.
Se describe un multiprocesador, multiprograma, programa de la colección de la basura del parar-$$$-MUNDO. El excedente del sistema reparte inicialmente las fuentes de la raíz, y después emplea iterativo el equilibrio estático y dinámico del trabajo. Los hilos de rosca de la colección de la basura compiten dinámicamente para las particiones iniciales. Trabaje robando las coletas de dos extremos, donde se reduce la contención, se describen para proporcionar la carga dinámica que balancea entre los hilos de rosca. La contención es resuelta usando instrucciones atómicas. El montón está quebrado en una generación joven y vieja donde el copiado paralelo del semi-espacio se utiliza para recoger la generación y el paralelo jóvenes marca-que condensan la vieja generación. La velocidad y la eficacia de la colección se realza por medio de las tablas de tarjeta y los objetos el ligarse, y las condiciones del desbordamiento son manejadas eficientemente ligando indicadores de la clase que usan. Una terminación de la colección de la basura emplea una palabra global del estado.