Techniques are provided that speed synchronous garbage collection in
systems that use reference counting. The present invention performs each
of the steps of marking, scanning, and collecting on all nodes that are
possibly nodes in a cycle of garbage. These nodes are referred to as
"root" nodes herein. In other words, an aspect of the present invention
performs the step of marking on each root node, the step of scanning on
each root node, and the step of collecting on each root node. Performing
one or more of these steps on all of the root nodes results in a lower
number of operations than selecting single root nodes, performing these
steps on each root node, and iterating until all root nodes are selected.
Additionally, before root nodes are added to a buffer, they are examined
to determine if they are already in the buffer. If they are, they are not
added to the buffer. This prevents the same root node from being examined
multiple times. Finally, nodes are examined to determine whether they are
acyclic. Acyclic nodes are ignored when finding cyclic garbage.
Le tecniche sono fornite che accelerano l'accumulazione sincrona dell'immondizia nei sistemi che usano il conteggio di riferimento. L'invenzione presente effettua ciascuna delle operazione della marcatura, dell'esame e di raccolta su tutti i nodi che sono possibilmente nodi in un ciclo di immondizia. Questi nodi si riferiscono a come nodi "della radice" qui sotto. Cioè una funzione di presente invenzione effettua l'operazione di contrassegnare su ogni nodo della radice, l'operazione di esplorazione su ogni nodo della radice e l'operazione di raccolta su ogni nodo della radice. L'effettuazione dell'uno o più di queste operazione su tutti i nodi della radice provoca un numero più basso di funzionamenti che selezionando i singoli nodi della radice, effettuando queste operazione su ogni nodo della radice e ripetendo fino a selezionare tutti i nodi della radice. Ulteriormente, prima che i nodi della radice siano aggiunti ad un amplificatore, sono esaminati per determinare se sono già nell'amplificatore. Se sono, non sono aggiunti all'amplificatore. Ciò impedisce lo stesso nodo della radice essere esaminato periodi multipli. Per concludere, i nodi sono esaminati per determinare se siano aciclici. I nodi aciclici sono ignorati quando trova l'immondizia ciclica.