DE69923657T2 - Markierung von gespeicherten datenobjekten für garbage-kollektoren - Google Patents

Markierung von gespeicherten datenobjekten für garbage-kollektoren Download PDF

Info

Publication number
DE69923657T2
DE69923657T2 DE69923657T DE69923657T DE69923657T2 DE 69923657 T2 DE69923657 T2 DE 69923657T2 DE 69923657 T DE69923657 T DE 69923657T DE 69923657 T DE69923657 T DE 69923657T DE 69923657 T2 DE69923657 T2 DE 69923657T2
Authority
DE
Germany
Prior art keywords
objects
finalizers
count
data
coupled
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69923657T
Other languages
English (en)
Other versions
DE69923657D1 (de
DE69923657T8 (de
Inventor
J. Richard HOULDSWORTH
Steven Morris
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of DE69923657D1 publication Critical patent/DE69923657D1/de
Application granted granted Critical
Publication of DE69923657T2 publication Critical patent/DE69923657T2/de
Publication of DE69923657T8 publication Critical patent/DE69923657T8/de
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0261Garbage collection, i.e. reclamation of unreferenced memory using reference counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99956File allocation
    • Y10S707/99957Garbage collection

Description

  • Die vorliegende Erfindung bezieht sich auf ein Verfahren und eine Anordnung zum Verarbeiten gespeicherter Datenobjekte und insbesondere aber nicht ausschließlich auf die Verarbeitung der Finalisierung für Objekte in Speicherverdichtungs- und Garbage-Einsammlungsprozeduren, durchgeführt in Echtzeit in echtem oder in virtuellem Speicherraum einer Datenverarbeitungsanordnung.
  • Garbage-Einsammlung ist der automatisierte Abruf von Systemspeicherraum nach der letzten Verwendung durch ein Programm. Eine Anzahl Beispiele von Garbage-Einsammlungstechniken werden beschrieben in: "Garbage Collection: Algorithms for Automatic Dynamic Memory Management" von R. Jones u. a., erschienen bei John Wiley & Sons, 1996, ISBN 0-471-94148-4, auf den Seiten 1 bis 18. Während die Speicheranforderungen vieler Computerprogramme einfach und vorhersagbar sind, wobei die Speicherzuordnung und die Rückgewinnung von dem Programmierer oder einem Kompilator durchgeführt wird, gibt es einen Trend zu funktionellen Sprachen mit mehr komplexen Durchführungsmustern, so dass die Lebensdauer bestimmter Datenstrukturen nicht länger vor der Laufzeit bestimmt werden können und folglich ist automatisierter Abruf dieser Speicherung, wenn das Programm läuft, wesentlich.
  • Finalisierung ist ein Konzept, das in "Sun Microsystems' Java ® und anderen aktuellen Garbagegesammelten Sprachen und Programmierungsumgebungen, wie Modula-3 und Cedar, verwendet wird. Gespeicherte Datenobjekte können einen assoziierten Finaliser haben, der durchgeführt werden soll, nachdem das Objekt nominell für Garbagesammlung verfügbar wird aber bevor die Daten gesammelt werden. Der Zweck dieses Merkmals ist das Ermöglichen, dass ein Objekt alle andere Systemmittel aufräumt, die das Objekt beansprucht hat, bevor es zerstört wird. So würde beispielsweise der Finaliser für ein Java Datei-Objekt alle Systemdateihenkel, die von dem Objekt beansprucht sind, schließen.
  • Da ein Finaliser eine andere der Klasse von Objektverarbeitungsmethoden ist, mit der ganzen Leistung anderer Methoden kann die Finalisierprozedur auf alle Datenobjekte zugreifen, die von dem Objekt zugreifbar sind, das finalisiert wird. Deswegen müssen alle Objekte, die von einem Finaliser erreichbar sind, explizit von Garbage-Einsammlung ausgeschlossen werden. Weiterhin ist es möglich, dass das Finalisierverfahren derartige Objekte, die von einem Finaliser erreichbar sind, wieder aufleben lässt, ein schließlich des Objektes, das selber finalisiert wird, indem das Objekt wieder erreichbar gemacht wird. Folglich kann eine Garbage-Einsammlungsprozedur nicht Objekte löschen, die von einem finalisierbaren Objekt erreicht werden können bis der Finaliser durchgeführt hat und die Erreichbarkeit der Objekte neu bewertet worden ist. In Java und in anderen Sprachen wird die Möglichkeit, dass ein Objekt sich selber wiederholt wieder aufleben lässt, typischerweise dadurch entfernt, dass angegeben wird, dass der Finaliser für jede Instanz nur einmal durchgeführt wird. Diese Steuerung der Finalisierung wird hier vorausgesetzt.
  • In PCs oder Arbeitsstationen ist die zusätzliche Verarbeitung und die Speicherbelastung zum Unterstützen der Finalisierung normalerweise kein Problem, und zwar wegen des Betrags des Speichers, der typischerweise in einem PC vorhanden ist, obschon die Unterstützung selbstverständlich die Gesamteffizienz beeinträchtigen wird. In Umgebungen mit wenig Speicherraum, wie Settopboxen, aber kann Unterstützung für Finaliser Probleme verursachen und sogar kann ein gleichzeitiger oder inkrementaler Garbage-Kollektor das Programm anhalten, bis es einige oder alle ausstehenden Finaliser durchgeführt hat und von ihm verwendeten Speicherraum wiedergewonnen hat.
  • Deswegen ist es u. a. eine Aufgabe der vorliegenden Erfindung ein inkrementales Garbage-Einsammlungssystem zu schaffen, das finalisierbare Objekte unterstützt, während die Zeit zum Sammeln für diese Objekte wo möglich minimiert wird.
  • Nach der vorliegenden Erfindung wird eine Garbage-Einsammlungs- und Markierungsverfahren geschaffen zum Durchqueren von Datenstrukturen, die durch Datenobjekte gebildet werden, die durch identifizierende Zeiger in einem durchgehenden Mengenspeicher gekoppelt sind, mit Garbage-Einsammlung von Objekten klassifiziert als löschbar, wobei das Verfahren die nachfolgenden Verfahrensschritte umfasst:
    • a) für ein selektiertes Stammobjekt das Durchqueren der von ihm getragenen Zeiger zum Ermitteln der mit dem Stammobjekt gekoppelten Objekte; und
    • b) das Durchqueren der Zeiger zum Ermitteln weiterer Objekte, die mit denjenigen gekoppelt sind, die durch den vorhergehenden Verfahrensschritt identifiziert worden sind; wobei der Schritt b) wiederholt wird, bis kein Zeiger mehr durchquert zu werden braucht, wodurch die darin identifizierten Objekte als markiert klassifiziert sind, wobei einige der Menge Datenobjekte Finaliser aufweisen und einige weitere Objekte als von denjenigen Finalisern potentiell erreichbar identifiziert sind, deren Objekte als schwe bend klassifiziert sind, dadurch gekennzeichnet, dass ein erster Zählwert von Mengenobjekten beibehalten wird, die Finaliser haben und für jede Durchquerung, wenn die detektierte Gesamtheit an Objekten mit Finalisern kleiner ist als der beibehaltene erste Zählwert, eine weitere Löschung durchgeführt wird zum Identifizieren und Markieren von Stammobjekten für die restlichen von Finalisern erreichbaren Objekte, während, wenn die detektierten und beibehaltenen Gesamtheiten miteinander übereinstimmen, diejenigen Objekte, die als schwebend klassifiziert sind, unmittelbar als löschbar neu klassifiziert werden, wobei keine weitere Löschung durchgeführt wird.
  • Die vorliegende Erfindung schafft ebenfalls eine Datenverarbeitungsanordnung mit einem Datenprozessor, der mit einem RAM-Speicher gekoppelt ist, der eine Anzahl Datenobjekte enthält, die in Datenstrukturen durch identifizierende Zeiger miteinander verbunden sind und innerhalb einer Menge in einem angrenzenden Gebiet des Speichers, wobei die Anordnung weiterhin ein erstes zusätzliches Speichermittel aufweist, das für jedes Mengenobjekt einen Identifizierer für eine Klasse eines vorbestimmten Satzes von Markierungsklassen enthält, und wobei der Prozessor dazu vorgesehen ist, die nachfolgenden Vorgänge an der gespeicherten Menge Datenobjekte zu effektuieren:
    • a) für ein selektiertes Stammobjekt, das die von ihm getragenen Zeiger durchquert zum Ermitteln der mit dem Stammobjekt gekoppelten Objekte; und
    • b) das Durchqueren der Zeiger zum Ermitteln weiterer Objekte, die mit den identifizierten gekoppelt sind, wobei der Prozessor den Vorgang b) wiederholt, bis keine weiteren Zeiger mehr übrig sind, die durchquert werden müssen, wodurch die darin identifizierten Objekte als markiert klassifiziert sind, wobei einige der Menge Datenobjekte Finaliser aufweisen und einige weitere Objekte als von denjenigen Finalisern potentiell erreichbar identifiziert sind, deren Objekte als schwebend klassifiziert sind, dadurch gekennzeichnet, dass der Prozessor mit Mitteln gekoppelt ist, die einen ersten Zählwert von Mengenobjekten beibehalten, und vorgesehen sind um für jede Durchquerung zu ermitteln, ob die detektierte Gesamtheit an Objekten mit Finalisern kleiner ist als der beibehaltene erste Zählwert, wobei der Prozessor konfiguriert ist zum Durchführen einer weiteren Löschung zum Identifizieren und Markieren von Stammobjekten für die restlichen von Finalisern erreichbaren Objekte, während, wenn die detektierten und beibehaltenen Gesamtheiten miteinander übereinstimmen, der Prozessor vorgesehen ist alle Objekte, die als schwebend klassifiziert sind, unmittelbar als löschbar neu zu klassifizieren, wobei keine weitere Löschung durchgeführt wird.
  • Im Betrieb können Mengendatenobjekte, die Finaliser tragen, auf geeignete Art und Weise einen betreffenden Merker enthalten, der, wenn eingestellt, vermeidet, dass das Objekt neu als löschbar klassifiziert wird. In einer derartigen Anordnung kann der beibehaltene erste Zählwert auf geeignete Art und Weise inkrementiert werden bei der Einstellung des Merkers, und dekrementiert werden bei der Entfernung desselben. Um das Auftreten, möglich bei der inkrementellen Garbage-Einsammlung, der gesamten Anzahl Mengenobjekte, die Finaliser tragen, die sich ändern, wenn der Streich fortschreitet, zu bewältigen kann ein zweiter Zählwert der andauernden Anzahl markierter finalisierbarer Objekte, beibehalten werden, wobei dieser zweite Zählwert von der detektierten Gesamtzahl Objekte, die am Ende des Streichs Finaliser tragen, und vor dem Vergleich mit dem ersten Zählwert subtrahiert wird.
  • Weiter Merkmale und Vorteile der vorliegenden Erfindung dürften aus der Lektüre der nachfolgenden Beschreibung von Ausführungsformen der vorliegenden Erfindung hervorgehen und werden in den beiliegenden Patentansprüchen vorgetragen, auf die verwiesen wird.
  • Ausführungsbeispiele der Erfindung sind in der Zeichnung dargestellt und werden im vorliegenden Fall näher beschrieben. Es zeigen:
  • 1 ein Blockschaltbild eines Datenverarbeitungssystems, das geeignet ist zur Verkörperung der vorliegenden Erfindung; und
  • 2 bis 4 eine Darstellung der Gleichzeitigkeit der Markierungs- und der Streichvorgänge in dem Stand der Technik und in einer ersten bzw. zweiten Ausführungsform der vorliegenden Erfindung.
  • 1 stellt ein Datenverarbeitungssystem dar, wie ein PC, das als Gastgeber für eine Anzahl Software-Einrichtungen wirksam ist, die beispielsweise das System als ein Stöberer für Daten konfiguriert, die eine virtuelle Umgebung definieren. Das System umfasst eine zentrale Verarbeitungseinheit (CPU) 10, die über einen Adress-und-Datenbus 12 mit einem RAM- und ROM-Speicher 14, 16 gekoppelt ist. Diese Speicher können aus einer oder mehreren integrierten Schaltungen bestehen und können um eine Festplatte des Systems sowie um Mittel zum Auslesen aus zusätzlichen (entfernbaren) Speicheranordnungen, wie einen CD-ROM, erweitert werden. Mit der CPU 10 ist über den Bus 12 auch eine erste und eine zweite Benutzereingangsanordnung 18, 20 gekoppelt, die auf geeignete Art und Weise eine Tastatur und einen Cursor sowie eine Selektionsanordnung, wie eine Maus oder eine Steuerkugel aufweisen kann. Audio-Ausgang von dem System geht über einen oder mehrere Lautsprecher 22, die von einer Audio-Verarbeitungsstufe 24 betrieben wird. Video-Ausgang von dem System wird einem Wiedergabeschirm 26 angeboten, der von der Wiedergabetreiberstufe 28 unter Ansteuerung der CPU 10 betrieben wird. Eine weitere Datenquelle für das System ist über eine gekoppelte Verbindung mit entfernten Stellen, beispielsweise über das Internet, wo das System zu diesem Zweck mit einer Netzwerkschnittstelle 30 versehen ist, das mit dem Bus 12 gekoppelt ist.
  • Die vorliegende Erfindung ist insbesondere verkörpert in der Speicherverwaltung für eine Arbeitsgebiet des RAMs 14 unter Ansteuerung der CPU 10; wobei ein Steuerprogramm dazu zunächst in dem ROM 16 festgehalten wird und mit dem Operationssystem geladen wird. Die nachfolgenden Beispiele entsprechen gleichzeitigem Garbage-Einsammlungs- und Speicherverwaltungstechniken in der Java (® Sun Microsystems Inc.) virtuellen Maschine und die Terminologie soll entsprechend ausgelegt werden; es dürfte aber erkannt werden, dass die vorliegende Erfindung sich weder auf Java-entsprechende Systeme, auf entsprechende (oder inkrementelle) Garbage-Einsammlung, noch auf rein virtuelle Speicherverwaltung begrenzt.
  • Nachstehend wird eine Anzahl bestimmter Terme mit einer speziellen Bedeutung benutzt, und zwar wie folgt. Wurzelobjekte sind global zugreifbare gespeicherte Datenobjekte in Systemen: in Java, werden diese durch statische Dateien und Stapel dargestellt. Erreichbare Objekte sind gespeicherte Datenobjekte, die mit der Datenstruktur verbunden sind, deren Kopf die Wurzelobjekte des Systems sind: während der Garbage-Einsammlung soll der Markierungsprozess alle erreichbaren Objekte in einem einzigen Garbage-Einsammlungszyklus finden. Nicht erreichbare Objekte sind diejenigen gespeicherten Objekte, die nicht mit der Datenstruktur verbunden sind; sie sind nicht zugreifbar für laufende Programme und sind folglich Kandidat für die Garbage-Einsammlung.
  • Finalisierbare Objekte sind Datenobjekte, die nominell Garbage geworden sind, da sie nicht erreichbar sind, die aber auch einen nicht leeren Finaliser haben, der bisher noch nicht durchgeführt worden ist. Ein Finaliser kann nur einmal durchgeführt werden, so dass ein Objekt als finalisierbar betrachtet wird, wenn der Finaliser noch nicht von dem Garbage-Kollektor durchgeführt worden ist. Finaliser-erreichbare Objekte sind ein Subsatz der Gruppe nicht erreichbarer Objekte, die durch Verfolgung von finalisierbaren Objekten erreicht werden können: diese Objekte sollen nicht als Garbage eingesammelt werden.
  • Mutatorfäden sind Durchführungsfäden in einem inkrementalen Garbagesammelsystem: der Name rührt von dem Effekt der Mutation des Mengenspeichers her, der die gespeicherten Datenobjekte gleichzeitig mit den Garbagesammelfäden enthält, während ein Garbage-Einsammlungsfaden ein speziellen Systemfaden ist, dessen Zweck es ist, Garbageobjekte zu sammeln und mehr freien Raum in dem Mengenspeicher zu schaffen. Ein Finaliserfaden ist ein spezieller Systemfaden, der einen Finalisierungscode für unerreichbare Objekte mit Finalisern laufen lässt.
  • Die Detektionsperiode ist die Zeitperiode zwischen der letzten Referenz an ein Objekt, das entfernt werden soll, und seiner Detektion als ein unerreichbares Objekt. In Markierungslöschkollektoren wird dies durch die Dauer des Markierungszyklus bestimmt. Die Reklamationsperiode ist die Zeit zwischen einem Objekt, das als nicht erreichbar detektiert wird und dem Punkt, wo es gelöscht wird. In Markierungslösch-Garbage-Kollektoren wird dies durch die Dauer des Löschzyklus und das Vorhandensein finalisierbarer Objekte bestimmt.
  • Als Illustration dürfte es nützlich sein, dass zunächst eine allgemein angewandte Technik zum Finalisieren von Garbage-Einsammlung näher betrachtet wird, wobei diese Technik beispielsweise in der "Sun Java ® Virtual Machine" v1.0.2 angewandt wird. Der typische nicht finalisierende Garbage-Einsammlungszyklus kann unabhängig von Implementierungseinzelheiten beschrieben werden, als zunächst die Aufteilung des Massenspeichers in erreichbare und nicht erreichbare Sätze mit Datenobjekte, wonach die Garbage-Einsammlung des nicht erreichbaren Satzes folgt. Finalisierung erschwert die Garbage-Einsammlung dadurch, dass jedem Garbage-Einsammlungszyklus eine neue Stufe hinzugefügt wird, wie das Aufteilen des Massenspeichers in erreichbare und nicht erreichbare Sätze, wie oben beschrieben. Diesem Vorgang folgt eine Aufteilung des nicht erreichbaren Satzes in Garbage und von Finaliser erreichbare Sätze und zum Schluss wird Garbage-Einsammlungen dem Garbage-Satz durchgeführt und zum Schluss wird die Durchführung an dem von Finaliser erreichbaren Satz implementiert.
  • Diese Verlängerung des Zyklus bedeutet, dass die Verzögerung zwischen Objekten nicht erreicht bar wird und deren Einsammlung größer gemacht wird, mit der Folge, dass ein größerer Teil des Massenspeichers durch Garbage-Objekte benutzt wird und deswegen ein kleineres Gebiet des Massenspeichers für neue Items verfügbar ist. Auch die starke Abhängigkeiten zwischen den Stufen in den Zyklen bedeuten, dass die meisten Implementierungen schlechte Gleichzeitigkeitscharakteristiken haben, mit langen Pausen in den Mutatorfäden, je nachdem der Garbage-Einsammlungsalgorithmus fortschreitet. In der Erwägung, dass die Anzahl finalisierbarer Objekte in einem Typischen System ein geringer Prozentsatz des Satzes aktiver Objekte ist, sind die hinzugefügten Gemeinkosten der Finaliserunterstützung unverhältnismäßig groß. Der Zustand jedes Objektes in dem System wird durch zwei Variablen M und F identifiziert, wobei M Markiert (einschließlich jedes anderen Markierungszustandes) oder Unmarkiert sein kann und F Finaliser oder Kein Finaliser angeben kann.
  • Die einzelnen Aufgaben, die für den Garbage-Kollektor relevant sind und ihre Interaktion in dem einfachen System sind in 2 dargestellt. Die Mutator-Fäden MU können zu jeder Zeit neue Objekte in dem Massenspeicher schaffen. Die Markierungsstufe MA umfasst die Spurfolge von Objekten von Stammobjekten. Durch diese Spurfolge gefundene Objekte haben M = Markiert und Markierung kann in dem Garbage-Einsammlungsfaden oder in dem dargestellten Fall einer inkrementellen Garbage-Einsammlung, in dem Motoatorfäden durchgeführt werden. Die Finaliser-Aufteilung F–P umfasst das Reinigen des Massenspeichers, indem Objekte mit M = Nicht Markiert und F = Finaliser in eine Reihe gesetzt werden, wobei dann eine Markierungsphase finalisierbare Objekte als Stamm verwendet: diese laufen in dem Garbage-Einsammlungsfaden (GC). Die Finalisierungsstufe FS umfasst die Durchführung von Finalisern in der Reihe, und setzt F = Kein Finaliser für Objekte nach der Durchführung. Dies kann in dem Garbage-Einsammlungsfaden (GC)laufen, wie dargestellt, und zwar in einem zugeordneten Finaliserfaden FS.
  • Diese Technik hat eine Anzahl schlechte Charakteristiken, von denen die erste eine schlechte Gleichzeitigkeit mit den Schritten der Markierungsphase MA, Finaliser-Aufteilung F–P, und Garbage-Einsammlungsreinigung GC, die seriell auftritt. Folglich kann die inhärente Unabhängigkeit zwischen den Aufgaben nicht in einem Mehrfachfadensystem durchgeführt werden. Ein weiteres Problem ist die im Allgemeinen langen Reklamationszeiten für alle Objekte. Für Nicht-Finaliser-erreichbare Garbage (was der Hauptteil sein wird), wird in diesem Zyklus keine Garbage eingesammelt, bis die Finaliser-Aufteilung F–P vollständig ist. Dies ist verschwenderisch, da die Objekte während der Finalisierungsaufteilung F–P sowieso untersucht worden sind. Mit inkrementellen Garbage-Ein sammlungsalgorithmen ist die Systempause für Mutatoren während die Finaliser-Aufteilung F–P und die Garbage-Einsammlungsreinigung GC auftreten, unakzeptierbar lang, und zwar zwei komplette Reinigungen über den Massenspeicher plus der Finaliser-erreichbaren Markierungsphase umfassend.
  • Zum Reduzieren dieser Verzögerungen ist eine andere Art und Weise der Aufteilung von Aufgaben zwischen Fäden für eine effizientere Verwendung von Mehrfacheinfädelung erforderlich, während die Fähigkeit um Finaliser effizient zu verarbeiten beibehalten wird. Eine erste Verbesserung wird durch Parallelverarbeitung der Markierungs- und Reinigungszustände, was aus der Erweiterung der Anzahl Markierungszustände hervorgaht, so dass M Markiert, Nicht Markiert, Hängend oder Löschbar sein kann, wobei nur 2 Bits je Objekt zur Speicherung von M erforderlich sind, wie in der Veröffentlichung WO-A-9967741 mit dem Titel "Finalisation in Incremental Garbage Collectors" beschrieben. Als weiteres Beispiel zeigt 3 die resultierende Gleichzeitigkeit der Markierung und der Reinigung in dieser Anordnung mit vier Markierungszuständen. Wie in dem Beispiel nach 2 werden Mutatoren MU durchgeführt, die neue Objekte auf dem Massenspeicher modifizieren oder Schaffen, während die Markierungsphase MA gleichzeitig mit der Mutatorhandlung Objekte markiert, die von den Stammobjekten zugreifbar sind. M = Markiert wird gesetzt für gefundene Objekte mit einem Synchronisationspunkt SP (nachstehend noch näher beschrieben), die bei Vervollständigung auftreten. Dies kann in allen Fäden durchgeführt werden.
  • Die Reinigungsstufe GC besteht aus einer linearen Reinigung über den Massenspeicher, wobei alle Objekte mit M = Löschbar (detektierte Nicht-Erreichbare) bei Punkt D1 gelöscht werden, während Objekte mit M = Hängend und F = Finaliser in die Finaliser-Schlange gesetzt und markiert werden. Reinigung wird in dem Garbage-Einsammlungsfaden durchgeführt, wie bei GC1 angegeben und wartet bei Vervollständigung auf den Synchronisationspunkt. Die Finalisierungsstufe führt Finaliser für Objekte in der Finaliser-Schlange durch und setzt F = Kein Finaliser nach dem Durchlauf bei Punkt D2. Finalisierung wird in dem Garbage-Einsammungsfaden durchgeführt oder in einem zugeordneten Finalisierungsfaden.
  • Das Verfahren umfasst einen Synchronisationspunkt (wie oben erwähnt) an dem die Resultate der Markierungsphase in die Reinigungsphase übertragen werden. Die nächste Markierungsphase und der Reinigungszyklus können beide unmittelbar nach dem Synchronisationspunkt SP beginnen: obschon der Reinigungsfaden, wie dargestellt, am Anfangspunkt des Synchronisationspunktes SP anfangen kann, wird er nur Sachen verarbeiten, wie Zustandsänderungen usw. bis SP abgeschlossen ist, wenn die wirkliche Reinigung anfängt. Der Synchronisationspunkt selber führt die nachfolgenden Vorgänge durch:
    • 1. Das Drehen oder Verschieben von M für alle Objekte: dieser Vorgang verwandelt die Perzeption des gespeicherten Codes der Systeme ((beispielsweise binär 10) was Markiert angibt um eine Nicht Markierte nachfolgende Drehung anzugeben, mit einer ähnlichen Umwandlung für Nicht Markiert bis Hängend und Hängend zu Löschbar. Stattdessen, dass eine Reinigung über alle Objekte und eine Modifizierung aller betreffenden gespeicherten Markierungszustandsbits erforderlich ist, wird dieser Vorgang durch Drehung oder Verschiebung der Bedeutungen der Markierungszustandsbits durchgeführt.
    • 2. Das Zuordnen der neuen Stammobjekte für die nächste Markierungsphase, einschließlich der Objekte in der aktuellen Finalisierungsschlange.
  • Das Addieren der neuen Markierungszustände zusammen mit einem effizienten Verfahren zum Drehen der Zustände ermöglicht es, die parallele Verarbeitung der Software der Finaliser-erreichbaren Abtastung und der Garbage-Abtastung. Dies dauert zwei Garbage-Einsammlungszyklen zum Verlagern eines Nicht Markierten Objektes in den Löschbaren Zustand (Punkt D3 in 3), was lange genug ist zum Detektieren der Finaliser-Erreichbarkeit in der dazwischenkommenden Markierungsphase. Das Mischen der Stamm-Markierung und der Finaliser-erreichbaren Markierung reduziert die Codegröße und eliminiert auch die Notwendigkeit einer Finaliser-Aufteilung (F–P, 2) zum Trennen Finaliser-erreichbaren Objekte. Der kurze Synchronisationspunkt SP ist der einzige Punkt, wo die Mutator-Fäden gesperrt werden. Dieses Verfahren hat dazu eine ausgezeichnete inkrementelle und Mehrfach-Fadenleistung, da die Reinigungs-, die Finaliser- und die Mutator-Fäden mit einem hohen Unabhängigkeitsgrad arbeiten. Die Zykluszeit ist auch kürzer, da jeder Zyklus aus nur einer Markierungsphase besteht und jeweils nur eine Reinigung gleichzeitig funktioniert. Dadurch und durch das hohe Verhältnis des Zyklus, für den der Markierungsprozess aktiv ist, soll die Detektionsperiode für nicht referierten Objekte auf ähnliche Weise reduziert werden.
  • Im Betrieb löst die Garbage-Einsammlungsreinigung eine Markierung des Finaliser-erreichbaren Satzes aus, wenn dieser Objekte in dem Hängenden Zustand trifft. Auf diese Weise betreibt der Reiniger auf effektive Weise den Markierungsprozess, dies im Gegensatz zu den herkömmlichen Markierungsreinigungsprozessen, wobei der Markierer von einem unabhängigen Stammsatz außerhalb des Massenspeichers betrieben wird.
  • Es gibt einen wenig befriedigenden Aspekt, indem die Reklamationsperiode für den Prozess dennoch hoch ist. Garbage-Objakte werden innerhalb von zwei Zyklen von dem Synchronisationspunkt eingesammelt, wo sie als unerreichbar identifiziert worden sind (der Zustandsübergang von Nicht Markiert zu Hängend). In den meisten Zyklen werden keine neuen finalisierbaren Objekte unerreichbar und in diesen Zyklen werden alle Hängenden Objekte in dem nächsten Zyklus Löschbar, so dass sie theoretisch in dem Hängenden Zyklus gelöscht werden. Dies geht aus den speziellen Charakteristiken der Finaliser-Objekte in dem Hängenden Zustand hervor, wobei diese Charakteristiken in der vorliegenden Erfindung zum Verbessern der Effizienz der Garbage-Einsammlung für Finaliser benutzt werden, entweder in einem inkrementellen System, wie oben anhand der 3 beschrieben, oder mehr sequentielle Markieren-danach-Reinigen-Anordnungen.
  • Eine Ausführungsform wird nachstehend als eine Verbesserung des oben anhand der 3 beschriebenen vier-Markierungen-Zustandes beschrieben, wobei die Ausführungsform ein Mittel schafft um auf zuverlässige Art und weise zu detektieren, ob Objekte in dem Hängenden Zustand auf sichte Weise gelöscht werden können. Diese Prozedur wird dadurch durchgeführt, dass die Anzahl Objekte mit Finalisern befolgt wird, die beim Markieren gefunden wurden, und dadurch, dass diese mit einer bekannten und gespeicherten zugeordneten Gesamtzahl in dem Speicher verglichen wird. Da die Finalisierungsschlange in dem Markierungsprozess untergebracht ist, sind die einzigen finalisierbaren, die währen d der Markierung nicht lokalisiert worden sind, diejenigen, die während des vorhergehenden Einsammlungszyklus nicht erreichbar wurden. Wenn nicht alle finalisierbaren Objekte in der vorhergehenden Markierungsphase untergebracht sind, gibt es einen nicht leeren Satz Finaliser-erreichbarer Objekte, die bei der Reinigung identifiziert werden sollen. Wenn aber alle finalisierbaren berücksichtigt worden sind. Sind alle Hängenden Objekte als Garbage bekannt und können sofort gelöscht werden.
  • Die Objektzustände sind wie in 3, wobei aber drei neue allgemeine Variable hinzugefügt worden sind:
    • – finaliser_count Eine Zählung der gesamten Anzahl finalisierbarer Objekte in dem Massenspeicher
    • – found_count Die Anzahl von Finaliser erreichbarer Objekte, die sich während des Markierungsprozesses angesiedelt haben
    • – shortcut Einen Merker, der angibt, wie der Reinigungsprozess sich in diesem Zyklus benehmen soll.
  • Die Aufgaben werden im Allgemeinen wie in dem Beispiel nach 3 durchgeführt, aber mit einigen Ausnahmen, wie in 4 dargestellt. In dem Fall der Mutatoren wird, wenn ein neues Objekt F = Finaliser hat, wird der finaliser_count inkrementiert. Während der Markierung wird, wenn ein gefundenes Objekt F = Finaliser hat, found_count inkrementiert. Während der Reinigung werden, wenn der variable "shortcut" wahr ist, M = Hangend und M = Löschbar beim Punkt D5 gelöscht; wenn "shortcut" falsch ist, dann werden alle Objekte mit M = Löschbar gelöscht und alle Objekte mit M = Hänged und F = Finaliser in die Finaliser-Schlange gesetzt und für eine nachfolgende Löschung beim Punkt D6 markiert. Finalisierung wird wie oben durchgeführt aber, nach dem Durchlauf des Finaliser-Fadens für ein Objekt, wird F auf Nihct Finaliser gesetzt, das Objekt wird markiert und found_count und finaliser_count werden dekrementiert.
  • Die am Synchronisationspunkt angewandte Prozedur umfasst nun eine Bewertung der Zählvariablen, wobei, nach Drehung der Bedeutung von M und der Zuordnung der Stammobjekte, die Variable "shortcut" auf das Ergebnis (found_count = finaliser_count) gesetzt wird:
    Wenn die Technik auf einen inkrementellen Garbage-Kollektor angewandt wird, wie beschrieben, kann der finaliser_count sich während des Markierungsdurchgangs ändern. Um die Zählwerte konsistent zu machen soll der found_count keine Objekte enthalten, die während des Markierungsdurchgangs gefunden wurden, oder der Verglkeich wird das falsche Ergebnis liefern. Um dies zu vermeiden kann während des Durchgangs der found_count 1 subtrahiert haben, wenn ein markiertes finalisierbares Objekt gefunden wird. Auf alternative Weise kann ein zweiter beginnender Zählvorgang processed_count eingehalten werden zum Aufzeichnen der Anzahl markierter Finaliser, die während einer Reinigung gefunden wurden, wobei processed_count vom found_count gelöscht wird, und zwar vor einem Vergleich mit finaliser_count.
  • 4 zeigt dieses optimierte Finalisierungsmodell mit zusätzlicher Reklamation durch Verwendung der "shortcut" Variablen: es dürfte einleuchten, bei einem Vergleich mit der Technik nach 3, dass die Technik nach 4 1-Zyklus Reklamation gewährleistet, wenn keine Finaliser verwendet werden und maximal eine 2-Zyklen Reklamation für 4 alle nicht-Finaliser-erreichbaren Datenobjekte.
  • In dem im Allgemeinen seltenen Fall, dass eine Datenstruktur mit mehr als nur einem finalisierbaren Objekt nicht erreichbar wird, wird die Anzahl in diesem Zyklus detektierter finalisierbaren Objekte ungewiss, und zwar wegen einer Rennbedingung zwischen dem Markierungsprozess und dem Abtastfortschritt. So wird beispielsweise das Objekt F1 durch die Reinigung gefunden, der Finalisierungsschlange hinzugefügt und markiert: F1 referiert an ein anderes finalisierbares Objekt F2, das ebenfalls in diesem Zyklus nicht erreichbar ist. Je nach dem verhalten des Markierungsalgorithmus kann F2 von dem Markierer erreicht werden, bevor oder nachdem die erste Reinigung ihn erreicht. F2 wird in diesem Zyklus nur der Finalisierungsliste hinzugefügt, wenn der Reiniger es erreicht. Eine mögliche Lösung wäre, Objekte in die Finalisierungsschlange zu setzen, wenn sie markiert sind, so dass dieselben Vorgänge für ein Objekt durchgeführt werden, ungeachtet ob es durch den Reinigungs- oder den Markierungsprozess gefunden wurde.
  • Ein aggressiver Markierungsalgorithmus wird dazu neigen, zu vermeiden, dass niedrige finalisierbare Objekte in einer verbundenen Datenstruktur während desselben Zyklus wie die oberen Pegel der Struktur in die Schlange geraten, was zu einer halbtopologischen Reihenfolge der Finaliser führt. Dies hilft typischerweise das Neuverwenden von Raten, da höhere Objekte in einer Datenstruktur einen größeren erreichbaren Satz haben werden als niedrigere Terme, und werden deswegen dazu neigen, mehr Objekte bei Löschung unerreichbar zu machen.
  • Folglich kann das Markieren von vorhandenen Finalisierbaren während der Reinigung verzögert werden, bis die Reinigung vollständig ist, so dass alle neu nicht erreichbaren Finalisierbaren zu der Finalisierungsschlange hinzugefügt werden. Dies hilft die Vorhersagbarkeit und ermöglicht eine Verstärkung der Reklamationsperiodendefinitionen: 1-Zyklus Reklamation wird gewährleistet, wenn keine nicht erreichbaren finalisierbaren Objekte in der vorhergehenden Markierungsphase detektiert sind.
  • Obschon im Grunde in Termen einer Software-Stöbererimplementierung definiert, dürfte es dem Fachmann einleuchten, dass viele der oben beschriebenen funktionellen Merkmale auch durchaus in Hardware oder in einer Kombination von Hardware und Software implementiert werden könnten.
  • Text in der Zeichnung
    • 1
  • 30
    Netzwerkschnittstelle
    18
    Benutzereingangsanordnung
    24
    Audioverarbeitung
    28
    Wiedergabetreiberstufe
    26
    Wiedergabeanordnung
    • 2
    • Zyklus Zeit
    • 3
    • Zyklus Zeit
    • 4
    • Zyklus Zeit

Claims (7)

  1. Verfahren zum Einsammeln und Markieren von Garbage zum Durchqueren von Datenstrukturen, gebildet durch Datenobjekte, die durch identifizierende Zeiger in einem kontinuierlichen Speicher gekoppelt sind, mit Garbage-Sammlung von Objekten, die als löschbar klassifiziert sind, wobei dieses Verfahren die nachfolgenden Verfahrensschritte umfasst: a) für ein selektiertes Stammobjekt das Durchqueren der von ihm getragenen Zeiger zum Ermitteln der mit dem Stammobjekt gekoppelten Objekte; und b) das Durchqueren der Zeiger zum Ermitteln weiterer Objekte, die mit denjenigen gekoppelt sind, die durch den vorhergehenden Verfahrensschritt identifiziert worden sind; wobei der Schritt b) wiederholt wird, bis kein Zeiger mehr durchquert zu werden braucht, wodurch die darin identifizierten Objekte als markiert klassifiziert sind, wobei einige der Menge Datenobjekte Finalisierer aufweisen und einige weitere Objekte als von denjenigen Finalisierern potentiell erreichbar identifiziert sind, deren Objekte als schwebend klassifiziert sind, dadurch gekennzeichnet, dass ein erster Zählwert von Mengenobjekten beibehalten wird, die Finalisierer haben und für jede Durchquerung, wenn die detektierte Gesamtheit an Objekten mit Finalisierern kleiner ist als der beibehaltene erste Zählwert, eine weitere Löschung durchgeführt wird zum Identifizieren und Markieren von Stammobjekten für die restlichen von Finalisierern erreichbaren Objekte, während, wenn die detektierten und beibehaltenen Gesamtheiten miteinander übereinstimmen, diejenigen Objekte, die als schwebend klassifiziert sind, unmittelbar als löschbar neu klassifiziert werden, wobei keine weitere Löschung durchgeführt wird.
  2. Verfahren nach Anspruch 1, wobei eine Menge Datenobjekte mit Finalisierern einen betreffenden Merker aufweisen, der, wenn gesetzt, vermeidet, dass das Objekt als löschbar neu klassifiziert wird.
  3. Verfahren nach Anspruch 2, wobei der beibehaltene erste Zählwert beim Setzen des Merkers inkrementiert wird und bei der Entfernung desselben dekrementiert wird.
  4. Verfahren nach Anspruch 1, wobei die Menge Datenobjekte mit Finalisierern und als schwebend klassifiziert, wenn beim Durchqueren lokalisiert, in eine Finalisierungsreihe gesetzt werden zum Erledigen deren Finalisierer.
  5. Verfahren nach Anspruch 1, wobei ein zweiter Zählwert beibehalten wird von der anfangenden Anzahl markierter finalisierbarer Objekte, die während einer Löschung detektiert sind und am Ende der Lösung der zweite Zählwert von der detektierten Gesamtheit von Objekten mit Finalisierern subtrahiert wird, und zwar vor dem Vergleich mit dem ersten Zählwert.
  6. Datenverarbeitungsanordnung mit einem Datenprozessor, der mit einem RAM gekoppelt ist, der eine Anzahl Datenobjekte enthält, die in Datenstrukturen gekoppelt sind durch identifizierende Zeiger und innerhalb einer Löschung in einem angrenzenden Gebiet des Speichers, wobei die Anordnung weiterhin erste zusätzliche Speichermittel aufweist, die für jedes Objekt einen Identifizierer für eine eines vorbestimmten Satzes von Markierungsklassen enthält, und wobei der Prozessor vorgesehen ist zum Effektuieren der nachfolgenden Vorgänge an der gespeicherten Menge Datenobjekte: a) für ein selektiertes Stammobjekt, das die von ihm getragenen Zeiger durchquert zum Ermitteln der mit dem Stammobjekt gekoppelten Objekte; und b) das Durchqueren der Zeiger zum Ermitteln weiterer Objekte, die mit den identifizierten gekoppelt sind, wobei der Prozessor den Vorgang b) wiederholt, bis keine weiteren Zeiger mehr übrig sind, die durchquert werden müssen, wodurch die darin identifizierten Objekte als markiert klassifiziert sind, wobei einige der Menge Datenobjekte Finalisierer aufweisen und einige weitere Objekte als von denjenigen Finalisierern potentiell erreichbar identifiziert sind, deren Objekte als schwebend klassifiziert sind, dadurch gekennzeichnet, dass der Prozessor mit Mitteln gekoppelt ist, die einen ersten Zählwert von Mengenobjekten beibehalten, und vorgesehen sind um für jede Durchquerung zu ermitteln, ob die detektierte Gesamtheit an Objekten mit Finalisierern kleiner ist als der beibehaltene erste Zählwert, wobei der Prozessor konfiguriert ist zum Durchführen einer weiteren Löschung zum Identifizieren und Markie ren von Stammobjekten für die restlichen von Finalisierern erreichbaren Objekte, während, wenn die detektierten und beibehaltenen Gesamtheiten miteinander übereinstimmen, der Prozessor vorgesehen ist alle Objekte, die als schwebend klassifiziert sind, unmittelbar als löschbar neu zu klassifizieren, wobei keine weitere Löschung durchgeführt wird.
  7. Anordnung nach Anspruch 6, wobei der Prozessor vorgesehen ist, diejenigen Objekte zu löschen, die von schwebend neu klassifiziert wurden, wobei gleichzeitig diejenigen Objekte gelöscht werden, die bereits als löschbar klassifiziert wurden.
DE69923657T 1998-06-20 1999-06-10 Markierung von gespeicherten datenobjekten für garbage-kollektoren Expired - Fee Related DE69923657T8 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GBGB9813266.5A GB9813266D0 (en) 1998-06-20 1998-06-20 Stored data object marking for garbage collectors
GB9813266 1998-06-20
PCT/IB1999/001088 WO1999067697A2 (en) 1998-06-20 1999-06-10 Stored data object marking for garbage collectors

Publications (3)

Publication Number Publication Date
DE69923657D1 DE69923657D1 (de) 2005-03-17
DE69923657T2 true DE69923657T2 (de) 2006-03-23
DE69923657T8 DE69923657T8 (de) 2006-06-08

Family

ID=10834052

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69923657T Expired - Fee Related DE69923657T8 (de) 1998-06-20 1999-06-10 Markierung von gespeicherten datenobjekten für garbage-kollektoren

Country Status (8)

Country Link
US (1) US6393439B1 (de)
EP (1) EP1036355B1 (de)
JP (1) JP2002519750A (de)
KR (1) KR20010023063A (de)
DE (1) DE69923657T8 (de)
GB (1) GB9813266D0 (de)
TW (1) TW440777B (de)
WO (1) WO1999067697A2 (de)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7096238B2 (en) 1999-08-19 2006-08-22 Sun Microsystems, Inc. Dynamic feedback for determining collection-set size
US6493730B1 (en) * 2000-10-10 2002-12-10 Sun Microsystems, Inc. Efficient object faulting with generational garbage collection
US6999979B2 (en) * 2002-11-05 2006-02-14 Sun Microsystems, Inc. Efficient encoding of references into a collection set
US7035884B2 (en) * 2002-11-05 2006-04-25 Sun Microsystems, Inc. Placement of allocation trains in the train algorithm
US7539713B2 (en) 2002-11-05 2009-05-26 Sun Microsystems, Inc. Allocation of likely popular objects in the train algorithm
US7188129B2 (en) 2002-11-15 2007-03-06 Sun Microsystems, Inc. Merging trains in a collector based on the train algorithm
US7209935B2 (en) * 2002-11-27 2007-04-24 Sun Microsystems, Inc. Avoiding remembered-set maintenance overhead for memory segments known to be in a collection set
US7143124B2 (en) 2002-12-06 2006-11-28 Sun Microsystems, Inc. Detection of dead regions during incremental collection
US7024437B2 (en) * 2002-12-06 2006-04-04 Sun Microsystems, Inc. Better placement of objects reachable from special objects during collection based on the train algorithm
US7069280B2 (en) * 2002-12-06 2006-06-27 Sun Microsystems, Inc. Collection-tick mechanism for a collector based on the train algorithm
US7085790B2 (en) * 2002-12-06 2006-08-01 Sun Microsystems, Inc. Advancing cars in trains managed by a collector based on the train algorithm
US7031990B2 (en) 2002-12-06 2006-04-18 Sun Microsystems, Inc. Combining external and intragenerational reference-processing in a garbage collector based on the train algorithm
US7069281B2 (en) 2003-02-24 2006-06-27 Sun Microsystems, Inc. Efficient collocation of evacuated objects in a copying garbage collector using variably filled local allocation buffers
US7146390B2 (en) 2003-02-24 2006-12-05 Sun Microsystems, Inc. Staging the processing of remembered-set entries as part of collection based on the train algorithm
US7062519B2 (en) * 2003-02-27 2006-06-13 Sun Microsystems, Inc. Incremental scanning of enormous objects to improve scheduling and pause-time behavior of garbage collection
US7096329B2 (en) * 2003-02-27 2006-08-22 Sun Microsystems, Inc. Better placement of objects promoted into a generation managed by the train algorithm
US20040186863A1 (en) * 2003-03-21 2004-09-23 Garthwaite Alexander T. Elision of write barriers for stores whose values are in close proximity
US7827212B2 (en) * 2003-05-22 2010-11-02 International Business Machines Corporation System and method for improved clearing of JAVA object's variables
US7089272B1 (en) 2003-06-18 2006-08-08 Sun Microsystems, Inc. Specializing write-barriers for objects in a garbage collected heap
US7149762B1 (en) 2003-08-20 2006-12-12 Sun Microsystems, Inc. Handling futile collections in the train algorithm through selective extension of the collection set
US7404182B1 (en) 2003-10-03 2008-07-22 Sun Microsystems, Inc. Deferring and combining write barriers for a garbage-collected heap
US7636745B1 (en) * 2004-03-12 2009-12-22 Sun Microsystems, Inc. Concurrent-marking-initiation heuristic
US7340494B1 (en) * 2004-03-12 2008-03-04 Sun Microsystems, Inc. Garbage-first garbage collection
US7620943B1 (en) 2004-06-30 2009-11-17 Sun Microsystems, Inc. Using class properties to segregate objects in a generation managed by the train algorithm
US7676801B1 (en) 2004-08-31 2010-03-09 Sun Microsystems, Inc. Scanning of evacuated objects in a generation managed by the train algorithm
US7321909B1 (en) 2004-12-23 2008-01-22 Sun Microsystems, Inc. Method and apparatus for forwarding references to objects concurrently with space-incremental garbage collection
US7650371B2 (en) * 2006-12-14 2010-01-19 Microsoft Corporation Finalizable object usage in software transactions
US7783681B1 (en) * 2006-12-15 2010-08-24 Oracle America, Inc. Method and system for pre-marking objects for concurrent garbage collection
US8356286B2 (en) * 2007-03-30 2013-01-15 Sap Ag Method and system for providing on-demand profiling infrastructure for profiling at virtual machines
US8667471B2 (en) 2007-03-30 2014-03-04 Sap Ag Method and system for customizing profiling sessions
US20080243970A1 (en) * 2007-03-30 2008-10-02 Sap Ag Method and system for providing loitering trace in virtual machines
US8601469B2 (en) * 2007-03-30 2013-12-03 Sap Ag Method and system for customizing allocation statistics
US8522209B2 (en) * 2007-03-30 2013-08-27 Sap Ag Method and system for integrating profiling and debugging
US7904493B2 (en) * 2007-03-30 2011-03-08 Sap Ag Method and system for object age detection in garbage collection heaps
US8336033B2 (en) * 2007-03-30 2012-12-18 Sap Ag Method and system for generating a hierarchical tree representing stack traces
US8073882B2 (en) 2007-07-11 2011-12-06 Mats Stefan Persson Method, system and computer-readable media for managing software object handles in a dual threaded environment
US7987215B2 (en) * 2008-04-22 2011-07-26 Microsoft Corporation Efficiently marking objects with large reference sets
JP2009266113A (ja) * 2008-04-28 2009-11-12 Internatl Business Mach Corp <Ibm> メモリ管理方法およびシステム
US8522216B2 (en) 2010-05-04 2013-08-27 Oracle International Corporation Memory leak detection
US8504878B2 (en) * 2010-05-04 2013-08-06 Oracle International Corporation Statistical analysis of heap dynamics for memory leak investigations
US8473529B2 (en) 2011-03-14 2013-06-25 International Business Machines Corporation Single pass marking of finalizable objects
US9053017B2 (en) 2011-09-09 2015-06-09 Microsoft Technology Licensing, Llc Managing object lifetime in a cyclic graph

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5088036A (en) * 1989-01-17 1992-02-11 Digital Equipment Corporation Real time, concurrent garbage collection system and method
US5321834A (en) * 1989-11-28 1994-06-14 Xerox Corporation Method and system for reclaiming unreferenced computer memory space
US5485613A (en) * 1991-08-27 1996-01-16 At&T Corp. Method for automatic memory reclamation for object-oriented systems with real-time constraints
US5392432A (en) * 1991-08-27 1995-02-21 At&T Corp. Method for automatic system resource reclamation for object-oriented systems with real-time constraints
US5274804A (en) * 1991-11-20 1993-12-28 Parcplace Systems Automatic storage-reclamation postmortem finalization process
US5784699A (en) * 1996-05-24 1998-07-21 Oracle Corporation Dynamic memory allocation in a computer using a bit map index
US6055612A (en) * 1997-07-11 2000-04-25 Geodesic Systems, Inc. Incremental garbage collector with decommit barrier
US6047295A (en) * 1998-05-05 2000-04-04 International Business Machines Corporation Computer system, program product and method of managing weak references with a concurrent mark sweep collector

Also Published As

Publication number Publication date
WO1999067697A3 (en) 2000-04-13
DE69923657D1 (de) 2005-03-17
DE69923657T8 (de) 2006-06-08
TW440777B (en) 2001-06-16
KR20010023063A (ko) 2001-03-26
US6393439B1 (en) 2002-05-21
WO1999067697A2 (en) 1999-12-29
JP2002519750A (ja) 2002-07-02
EP1036355A2 (de) 2000-09-20
GB9813266D0 (en) 1998-08-19
EP1036355B1 (de) 2005-02-09

Similar Documents

Publication Publication Date Title
DE69923657T2 (de) Markierung von gespeicherten datenobjekten für garbage-kollektoren
DE60032694T2 (de) Speicherrückforderungsverfahren
DE60032685T2 (de) Speicherrückforderungsverfahren
DE69836796T2 (de) Datenverarbeiter mit lokalisierter gedächtnisreklamierung
DE69814170T2 (de) Inkrementeller freispeichersammler
DE69932874T2 (de) Verfahren und Computersystem zur dynamischen Generationsverwaltung von Rechnerspeicher
DE69909021T2 (de) Dynamische Speicherrückforderung ohne Compiler- oder Programmverbinderunterstützung
DE10050684B4 (de) Verfahren und System zur periodischen Ablaufverfolgung für Aufrufsequenzen zwischen Routinen
DE69930855T2 (de) Verfahren und vorrichtung zur durchführung einer deterministischen speicherzuordnungsantwort in einem computer-system
DE69923658T2 (de) Dynamische speicherplatzzuordnung
DE60034702T2 (de) Verfahren und vorrichtung zur verbesserung der wirksamkeit von kopierender speicherbereinigung
DE69912392T2 (de) Finalisierung in inkrementellen speicherbereinigern
DE112019001821B4 (de) Verfahren und vorrichtung zur wiedergabe eines aktivierungsrahmens für unterbrechungsfreie speicherbereinigung (pause-less garbage collection)
DE60318993T2 (de) Eingebettete Speicherbereinigung
DE112011101759T5 (de) Sampling von Leerlauftransitionen
DE60307527T2 (de) Tupleraumoperationen für eine feinkörnige Systemsteuerung
US6502110B1 (en) Memory reclamation method and apparatus
EP1623394A1 (de) Speicherverwaltung bei einem tragbaren datentrager
DE102009009172A1 (de) Abbildung von Adressen eines Programmcodes und von Adressen von Daten in einem Speicher
EP1728162A1 (de) Speicherbereinigung (garbage collection) für smart cards
DE112021004460T5 (de) Arbeitsübernahme bei einer speicherbereinigung mit gleichzeitigem markieren mit fingerzeiger
DE102005013896B4 (de) Verfahren zur Datenverwaltung und Datenzugriffssystem zum Speichern von allen Verwaltungsdaten in einer Verwaltungsbank eines nicht-flüchtigen Speichers
EP1530131B1 (de) Beschleunigtes Referenzfinden für eine automatische Speicherbereinigung (Garbage Collection)
DE112015003923T5 (de) Überlagerte Löschblock-Zuordnung
DE102019128206A1 (de) Verfahren und Vorrichtung zur statischen Speicherverwaltungsoptimierung bei integrierten Mehrkernprozessoren

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee