A method and apparatus are disclosed for efficiently creating and
maintaining a remembered set in a generational garbage collection scheme
using a write buffer and a barrier bit associated with each object. A
barrier bit associated with each object differentiates generations in a
generational garbage collection scheme. When an object is first created,
the barrier bit of the object is set to zero. The barrier bit is set when
the object becomes old, for example, after surviving a first garbage
collection. The barrier bit is used to determine whether to make an entry
into a write buffer when a reference to another object is stored into an
object. An entry is made in the write buffer only if the barrier bit of
the object that is written into is set. At the end of each garbage
collection, entries in the write buffer are added to the remembered set
for the next garbage collection if the objects satisfy the criterion for
membership, i.e., they are live and may contain pointers to objects in a
younger generation. Thus, the remembered set consists of objects that were
in the write buffer at the time of a garbage collection, that must be
remembered for the next garbage collection. The write buffer is kept small
by eliminating duplicate entries. The present invention turns off the
barrier bit after the first store during each reclamation period (which
causes the object to be identified in the write buffer). The barrier bit
is turned on again by the garbage collector after the write buffer has
been processed.
Μια μέθοδος και μια συσκευή αποκαλύπτονται για αποτελεσματικά να δημιουργήσουν και η διατήρηση ενός αναφερόμενου συνόλου σε μια χρησιμοποίηση σχεδίου συλλογής απορριμάτων generational γράφει τον απομονωτή και ένα κομμάτι εμποδίων που συνδέεται με κάθε αντικείμενο. Ένα κομμάτι εμποδίων που συνδέεται με κάθε αντικείμενο διαφοροποιεί τις γενεές σε ένα σχέδιο συλλογής απορριμάτων generational. Όταν ένα αντικείμενο δημιουργείται αρχικά, το κομμάτι εμποδίων του αντικειμένου τίθεται μηδέν. Το κομμάτι εμποδίων τίθεται όταν το αντικείμενο γίνεται παλαιό, παραδείγματος χάριν, μετά από να επιζήσει μιας πρώτης συλλογής απορριμάτων. Το κομμάτι εμποδίων χρησιμοποιείται για να καθορίσει εάν για να κάνει μια είσοδο μέσα σε να γράψει τον απομονωτή όταν αποθηκεύεται μια αναφορά σε ένα άλλο αντικείμενο σε ένα αντικείμενο. Μια είσοδος γίνεται γράφει τον απομονωτή μόνο εάν το κομμάτι εμποδίων του αντικειμένου που γράφεται τίθεται. Στο τέλος κάθε συλλογής απορριμάτων, οι καταχωρήσεις γράφουν ότι ο απομονωτής προστίθεται στο αναφερόμενο σύνολο για την επόμενη συλλογή απορριμάτων εάν τα αντικείμενα ικανοποιούν το κριτήριο για την ιδιότητα μέλους, δηλ., αυτοί είναι ζωντανά και μπορούν να περιέχουν τους δείκτες στα αντικείμενα σε μια νεώτερη γενεά. Κατά συνέπεια, το αναφερόμενο σύνολο αποτελείται από τα αντικείμενα που ήταν γράφουν τον απομονωτή κατά την διάρκεια μιας συλλογής απορριμάτων, η οποία πρέπει να αναφερθεί για την επόμενη συλλογή απορριμάτων. Γράψτε ότι ο απομονωτής κρατιέται μικρός με την εξάλειψη των διπλών καταχωρήσεων. Η παρούσα εφεύρεση κλείνει το κομμάτι εμποδίων μετά από το πρώτο κατάστημα κατά τη διάρκεια κάθε περιόδου αποκατάστασης (που αναγκάζει το αντικείμενο για να προσδιοριστεί γράφει τον απομονωτή). Το κομμάτι εμποδίων ανοίγεται πάλι από το συλλέκτη απορριμάτων αφότου γράψτε ότι ο απομονωτής έχει υποβληθεί σε επεξεργασία.