A data processing apparatus for handling multi-thread programs comprises a
data processor coupled with a random-access memory containing a plurality
of data objects. Each data object is accessed via respective pointers
carried by memory stacks associated with respective threads. Periodically,
a garbage collection procedure is applied to the random-access memory with
those data objects having no extant pointers thereto from any source being
identified and deleted. Subject to a locking constraint applied to some of
the data objects, the remainder are compacted to free space in the memory.
To enable localising of the garbage collection procedure, reference stacks
are provided for each thread stack frame such as to identify, preferably
via a per-thread reference table, data objects referenced from only a
single frame, which objects are deleted on conclusion of that frame.
Un apparecchio dell'elaborazione dei dati per il maneggiamento dei programmi multi-thread contiene un informatico accoppiato con una memoria di accesso casuale che contiene una pluralità di oggetti di dati. Ogni oggetto di dati è raggiunto via gli indicatori rispettivi trasportati dalle pile di memoria connesse con i filetti rispettivi. Periodicamente, una procedura dell'accumulazione dell'immondizia è applicata alla memoria di accesso casuale con quegli oggetti di dati che non hanno indicatori extant a ciò da tutta la fonte che è identificata e cancellata. Conforme ad un vincolo di bloccaggio si è applicato ad alcuni degli oggetti di dati, il resto sono compressi per liberare lo spazio nella memoria. Per permettere localizzare della procedura dell'accumulazione dell'immondizia, le pile di riferimento sono fornite per ogni struttura della pila del filetto tale da identificare, preferibilmente via per-filettano la tabella di riferimento, oggetti di dati riferiti soltanto da una singola struttura, che gli oggetti sono cancellati sulla conclusione di quel telaio.