A garbage collection method that distinguishes between local objects and managed objects, and between an ordinary pointer to an object, an owning pointer to an object, and a non-owning pointer to an object is presented. Ordinary pointers point only to local objects, and owning and non-owning pointers point only to managed objects. Managed objects have attributes including a count of the number of owning pointers referring to them, and a linked list of non-owning pointers referring to them. Managed objects only possess non-owning pointers. Only an invocation of a subroutine within a thread can possess an owning pointer. Using this method, when an invocation exits, its exit code gives up ownership of all objects it owned. When an object is no longer reachable from any owning pointer, either directly, or indirectly through non-owning pointers, the object is immediately de-allocated. By implementing data structures and methods to support owning pointers, non-owning pointers, and managed objects, and by enforcing rules regarding the use of ordinary pointers, owning pointers, and non-owning pointers, efficient and deterministic garbage collection is achieved, memory leaks and dangling pointers are eliminated, and objects containing circular references to each other are not a source of memory leaks.

Μια μέθοδος συλλογής απορριμάτων που διακρίνουν μεταξύ των τοπικών αντικειμένων και των διοικούμενων αντικειμένων, και μεταξύ ενός συνηθισμένου δείκτη σε ένα αντικείμενο, έναν όντας κύριο δείκτη σε ένα αντικείμενο, και ένας μη-όντας κύριος δείκτης σε ένα αντικείμενο παρουσιάζονται. Οι συνηθισμένοι δείκτες δείχνουν μόνο τα τοπικά αντικείμενα, και η ιδιοκτησία και η μη-ιδιοκτησία των δεικτών δείχνουν μόνο τα διοικούμενα αντικείμενα. Τα διοικούμενα αντικείμενα έχουν τις ιδιότητες συμπεριλαμβανομένης μιας αρίθμησης του αριθμού ιδιοκτησίας των δεικτών που αναφέρονται σε τους, και έναν συνδεμένο κατάλογο μη-ιδιοκτησίας των δεικτών που αναφέρονται σε τους. Τα διοικούμενα αντικείμενα κατέχουν μόνο την μη-ιδιοκτησία των δεικτών. Μόνο μια επίκληση μιας υπορουτίνας μέσα σε ένα νήμα μπορεί να κατέχει έναν όντας κύριο δείκτη. Χρησιμοποιώντας αυτήν την μέθοδο, όταν βγαίνει μια επίκληση, ο κώδικας εξόδων του σταματά την ιδιοκτησία όλων των αντικειμένων που ήταν κύρια. Όταν ένα αντικείμενο δεν είναι πλέον εφικτό από οποιοδήποτε όντας κύριο δείκτη, είτε άμεσα, είτε έμμεσα μέσω της μη-ιδιοκτησίας των δεικτών, το αντικείμενο απελευθερώνεται αμέσως. Με την εφαρμογή των δομών δεδομένων και των μεθόδων για να υποστηρίξει την ιδιοκτησία των δεικτών, μη-που είναι κύριων των δεικτών, και των διοικούμενων αντικειμένων, και με την επιβολή των κανόνων σχετικά με τη χρήση των συνηθισμένων δεικτών, την ιδιοκτησία των δεικτών, και την μη-ιδιοκτησία των δεικτών, η αποδοτική και αιτιοκρατική συλλογή απορριμάτων επιτυγχάνεται, οι διαρροές μνήμης και οι ταλαντεύοντας δείκτες αποβάλλονται, και τα αντικείμενα που περιέχουν τις κυκλικές αναφορές το ένα στο άλλο δεν είναι μια πηγή διαρροών μνήμης.

 
Web www.patentalert.com

< Method, apparatus and computer program product for invoking a thread-unaware routine that uses an operation-dependent temporary data structure

< Method and apparatus for multi-thread pipelined instruction decoder

> Memory reclamation method

> Method frame storage using multiple memory circuits

~ 00092