DE69814170T2 - Inkrementeller freispeichersammler - Google Patents

Inkrementeller freispeichersammler Download PDF

Info

Publication number
DE69814170T2
DE69814170T2 DE69814170T DE69814170T DE69814170T2 DE 69814170 T2 DE69814170 T2 DE 69814170T2 DE 69814170 T DE69814170 T DE 69814170T DE 69814170 T DE69814170 T DE 69814170T DE 69814170 T2 DE69814170 T2 DE 69814170T2
Authority
DE
Germany
Prior art keywords
program
function
objects
heap
assigned
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 - Lifetime
Application number
DE69814170T
Other languages
English (en)
Other versions
DE69814170D1 (de
Inventor
M. David SAUNTRY
E. Michael MARKLEY
Mark Gilbert
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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Application granted granted Critical
Publication of DE69814170D1 publication Critical patent/DE69814170D1/de
Publication of DE69814170T2 publication Critical patent/DE69814170T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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
    • 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/0269Incremental or concurrent garbage collection, e.g. in real-time systems
    • 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/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability
    • 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

  • Gebiet der Erfindung
  • Die Erfindung betrifft allgemein Computersysteme, und spezieller betrifft sie die Verwaltung der Speicherabschnitte derartiger Systeme.
  • Hintergrund der Erfindung
  • Viele Computersysteme verwalten Information unter Verwendung von Objekten. Ein Objekt entspricht Daten, die ein spezielles Attribut gemeinsam haben und einen Bereich eines Direktzugriffsspeichers (RAM) belegen. Objekte dürfen im Speicher nicht überlappen. Aktive Objekte sind solche, wie sie im aktuell durch ein Computersystem ausgeführten Rechenprozess benötigt werden. Wenn alle Objekte in einem System dauernd aktiv sind, bestehen keine Probleme hinsichtlich der Speicherverwaltung. Der Raum, wie er jedem Objekt beim Systemstart zugewiesen wird, muss nie wiedergewonnen oder neu beansprucht werden. In den meisten Systemen weisen aktive Objekte jedoch variierende Lebensdauern auf, die nicht vorab vorhergesagt werden können. In derartigen Systemen ist ein gewisses Verfahren zum Erkennen abgelaufener oder toter Objekte und zum zwangsweisen Entfernen derselben aus dem Speicher erforderlich, wenn Speicherressourcen einzusparen sind.
  • Wertlose Daten oder "Garbage" betrifft in einem Computersystemspeicher gespeicherte Daten, die bei der Ausführung eines Programms, einer Methode, einer Funktion oder einer Unterroutine, die derartige Daten zugeordnet hat, nicht mehr benutzt werden. Der Zweckdienlichkeit halber werden ein Pro gramm, eine Methode, eine Funktion oder eine Unterroutine, die Daten zuordnet, einfach als Programm oder Funktion bezeichnet. Das Sammeln wertloser Daten oder Speicherbereinigung ist der Prozess des Lokalisierens von Daten in dynamisch zugeordneten Speichern, die nicht mehr benutzt werden, und Wiedergewinnen des Speichers, um zukünftigen Speicherzuordnungsanforderungen zu genügen. Die Speicherbereinigung bietet die Möglichkeit deutlicher Gewinne hinsichtlich der Produktivität von Programmierern, da sich diese wegen der Funktion der Speicherbereinigung nicht darum kümmern müssen, Daten aus dem Speicher zu entfernen, wenn sie nicht mehr benötigt werden, wenn das Programm endet. Demgemäß unterstützt die Speicherbereinigung Programmierer und Systemdesigner dahingehend, ihre Anstrengungen vielen auf höherer Ebene zu widmen, wie dem Design der grundlegenden Algorithmen, der Benutzerschnittstellen und der allgemeinen Programmfunktion. Auch verringert die Speicherbereinigung durch Beseitigen vieler Programmierprobleme auf niedriger Ebene die Wahrscheinlichkeit von Programmierfehlern. Diese Vorteile der Speicherbereinigung gehen damit einher, dass verbesserte Softwarefunktion und Zuverlässigkeit bei niedrigeren Entwicklungskosten geboten werden.
  • Speicherbereinigung kann in einer Anzahl von Situationen auftreten. Wenn z. B. die Menge des im verfügbaren Speicher verbliebenen Speicherraums unter einen vorbestimmten Wert fällt, wird eine Speicherbereinigung ausgeführt, um alles an Speicherraum rückzugewinnen, das rückgewinnbar ist. Auch kann ein Programm oder eine Funktion Speicherbereinigung dadurch erzwingen, dass eine Speicherbereinigungseinrichtung oder ein "Garbagekollektor" aufgerufen wird. Schließlich kann die Speicherbereinigungseinrichtung als Hintergrundtask laufen, der nach wiederzugewinnenden Objekten sucht. Aber obwohl sie aufgerufen werden können, arbeiten herkömmliche Speicherbereinigungseinrichtungen dadurch, dass sie die Aus führung ⋂von Systemprogrammen periodisch anhalten, um den gesamten Speicher zu durchlaufen, wenn sie nach Speicherbereichen suchen, die nicht mehr in Gebrauch sind. Herkömmliche Speicherbereinigungseinrichtungen zeigen eine Anzahl von Hauptmängeln. Ein derartiger Mangel besteht darin, dass, hinsichtlich der Raten der Zuordnung und der Aufhebung derselben von Objekten, der Speicherdurchsatz allgemein viel niedriger als z. B. bei Stackzuordnung ist. Auch sind die zum Zuordnen von Speichern erforderlichen Zeiten nur sehr lose gebunden – die Grenzen betreffend Zuordnungszeiten sind ausreichend eng, um ein zuverlässiges Programmieren hoch interaktiver oder Echtzeitsysteme zu erlauben, wie bei der Mausbewegung, interaktiver Steuerung von Multimediageräten und Systemen mit virtual reality. Schließlich ist ein einigen Speicherbereinigungseinrichtungen der Funktionsaufwand in Zusammenhang mit Lese- und Schreibvorgängen betreffend den Speicher so hoch, dass die Gesamtsystemfunktion unakzeptierbar langsam sein kann.
  • Diese Bedenken sind bei Systemen mit speziellen Einschränkungen und Besonderheiten verstärkt. Zum Beispiel ist Microsoft Windows CE einkompaktes, effizientes und skalierbares Betriebssystem, das bei einer großen Vielzahl eingebetteter oder Einbauprodukte verwendet werden kann, von Hand-PCs bis zu spezialisierten Industriesteuerungen und Geräten der Verbraucherelektronik. Viele Geräte unter Verwendung von Microsoft Windows CE sind für einen relativ kleinen Umfang an Direktzugriffsspeicher (RAM) vorgesehen, wie von einem Megabyte, um so zu gewährleisten, dass die Geräte billig, kompakt und effizient in der Energienutzung bleiben. Darüber hinaus verfügen für die Verwendung von Microsoft Windows CE konzipierte Geräte typischerweise über weniger leistungsfähige Prozessoren als sie sich typischerweise in Computern finden, die dazu konzipiert sind, leistungsfähigere Betriebssysteme wie Microsoft Windows NT ablaufen zu lassen.
  • Für Systeme mit derartigen charakteristischen Einschränkungen und Besonderheiten ist es wesentlich, die Menge des verfügbaren Speichers zu maximieren. Es besteht Bedarf am effektiven und effizienten Maximieren der in derartigen Systemen verfügbaren Speichermenge.
  • Der Artikel "Garbage Collection Software Integrated With the System Swapper in a Virtual Memory System" von Jack D. Katzberg et al., der in Proceedings of the IEEE WESCANEX '93 Conference: Communications, Computers an Power in the Modern Environment, 17.–18. Mai 1993, Saskatoon, Kanada veröffentlicht ist, offenbart Interpreter Software zur Verwendung beim Bewerten des Funktionsvermögens einer Speicherbereinigungseinrichtung. Das US-Patent Nr. 5,535,390 für Hildebrandt offenbart ein Verfahren, bei dem Felder von einem Untertyp, wie sie in einem Objekt enthalten sind, untersucht werden, um zu ermitteln, ob für den Speicher, auf den das Objekt Bezug nimmt, eine Aufhebung der Zuordnung oder eine Neuzuordnung vorgenommen werden kann, ohne dass zusätzlicher Speicher oder CPU-Ressourcen verbraucht werden. Das Dokument "Inside the Java Virtual Machine" von Jordan Olin, auf der dem Buch von Joseph Weber et al., 2. Auflage, QUE Corporation, 1996, ISBN: 0-7897-0936-8 beigefügten CD-ROM erörtert Speicherbereinigung in Zusammenhang mit einer virtuellen Java-Maschine.
  • Zusammenfassung der Erfindung
  • Die Erfindung ist auf ein Verfahren zum Entfernen so vieler zeitweiliger Objekte wie möglich während des Ausführens eines Programms oder einer Funktion, ohne dass eine Haupt-Speicherbereinigungseinrichtung ausgelöst wird, gerichtet.
  • Bestimmte Befehle im Programm ordnen Objekte zu, wohingegen dies andere Befehle nicht tun. Typischerweise werden derar tige Objekte aus einem Heap zugeordnet. Gemäß einer Erscheinungsform der Erfindung wird, wenn ein Programmbefehl ein Objekt zuordnet, Information zu einem solchen Objekt gespeichert, die seine Identifizierung zu einem späteren Zeitpunkt nach dem Ende des Programms erleichtert. Zu derartiger Information gehören z. B. eine Threadkennung, die Stacknummer und ein Markierungsbit.
  • Die Erfindung erlaubt ein Wiedergewinnen derartigen Raums, ohne dass auf die Haupt-Speicherbereinigungseinrichtung zu warten wäre. Während des Ausführens eines Programms kann, wenn ein zugeordnetes Objekt nie in ein anderes Objekt gespeichert wird, ein derartiges Objekt verworfen werden und der von ihm belegte Raum kann wiedergewonnen werden. Anders gesagt, würde, wenn die Haupt-Speicherbereinigungseinrichtung aktiviert wäre, der durch ein solches Objekt belegte Raum wiedergewonnen werden. Demgemäß besteht einer der Vorteile der Erfindung im Freigeben des Speichers zu einem früheren Zeitpunkt als dem, zu dem die Speicherbereinigungseinrichtung ihre Aufgabe ausführt, da die Erfindung, wie oben angegeben, das Wiedergewinnen von Raum ermöglicht, sobald das Programm beendet wird, das diesen Raum zugeordnet hat. Ferner erlaubt es die erfindungsgemäße inkrementelle Speicherbereinigungseinrichtung, anstatt dass sie den gesamten Heap durchscannt, wie dies die Speicherbereinigungseinrichtung tun würde, nur den zugeordneten Teil des Heaps, an Stelle des gesamten Heaps, durchzuscannen.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist ein Blockdiagramm der Hardware und der Betriebsumgebung in deren Zusammenhang Ausführungsformen der Erfindung realisiert werden können.
  • 2(a) ist ein Übersichts-Blockdiagramm auf Systemebene zu einer Technik zum Entfernen zeitweiliger Objekte.
  • 2(b) ist ein Blockdiagramm, das ein Modul zur inkrementellen Speicherbereinigung als Ausführungsform der Erfindung zeigt.
  • 3 ist ein Flussdiagramm des Prozesses zum Zuordnen von Objekten außerhalb des Heaps.
  • 4 zeigt die Zusatzinformation, wie sie in einem Objekt gespeichert ist, das im Objektheap zugeordnet ist.
  • 5 zeigt die Schritte, wie sie durch das inkrementelle Speicherbereinigungsmodul ausgeführt werden, wenn dieses durch den Heap scannt und die in den Objekten gespeicherte Zusatzinformation liest.
  • Detaillierte Beschreibung der Ausführungsformen
  • In der folgenden detaillierten Beschreibung wird auf die beigefügten Zeichnungen Bezug genommen, die einen Teil derselben bilden und die zur Veranschaulichung spezieller Ausführungsformen dargestellt sind, in denen die Erfindung realisiert werden kann.
  • In der detaillierten Beschreibung existieren drei Abschnitte. Der erste Abschnitt beschreibt die Hardware- und Betriebsumgebung, mit der Ausführungsformen der Erfindung realisiert werden können. Der zweite Abschnitt gibt eine Beschreibung einer Ausführungsform der Erfindung auf Systemebene. Schließlich gibt der dritte Abschnitt Verfahren für eine Ausführungsform der Erfindung an.
  • Hardware- und Betriebsumgebung
  • Die 1 ist ein Diagramm der Hardware- und Betriebsumgebung in deren Zusammenhang Ausführungsformen der Erfindung realisiert werden können. Die Beschreibung zur 1 ist dazu vorgesehen, für eine kurze und allgemeine Beschreibung geeigneter Computerhardware und einer geeigneten Rechenumgebung zu liefern, in deren Zusammenhang die Erfindung realisiert werden kann. Obwohl es nicht erforderlich ist, wird die Erfindung im Allgemeinen in Zusammenhang von computerausführbaren Anweisungen beschrieben, wie Programmmodulen, die durch einen Computer, wie einen PC, ausgeführt werden. Allgemein gesagt, gehören zu Programmmodulen Routinen, Programme, Objekte, Komponenten, Datenstrukturen usw., die spezielle Tasks ausführen oder spezielle abstrakte Datentypen implementieren.
  • Darüber hinaus erkennt der Fachmann, dass die Erfindung mit anderen Computersystemkonfigurationen realisiert werden kann einschließlich Handgeräten, Multiprozessorsystemen, Verbraucherelektronik auf Mikroprozessorbasis oder programmierbarer Basis, Netzwerk-PCs, Mikrocomputern, Großrechnern und dergleichen. Die Erfindung kann auch in verteilten Computerumgebungen realisiert werden, wo Tasks durch Fernverarbeitungsvorrichtungen ausgeführt werden, die über Kommunikationsnetze verbunden sind. In einer verteilten Rechnerumgebung können Programmmodule sowohl in lokalen als auch in entfernten Speichervorrichtungen lokalisiert sein.
  • Die beispielhafte Hardware- und Betriebsumgebung der 1 zum Realisieren der Erfindung verfügt über eine Universal-Rechenvorrichtung in Form eines Computers 20 mit einer Verarbeitungseinheit 21, einem Systemspeicher 22 und einem Systembus 23, der funktionsmäßig verschiedene Systemkomponenten einschließlich des Systemspeichers mit der Verarbeitungsein heit 21 verbindet. Es kann nur eine Verarbeitungseinheit 21 vorhanden sein, oder mehrere, so dass der Prozessor des Computers 20 über eine einzelne zentrale Verarbeitungseinheit (CPU) oder über mehrere Verarbeitungseinheiten verfügt, was allgemein als parallele Verarbeitungsumgebung bezeichnet wird. Der Computer 20 kann ein herkömmlicher Computer, ein verteilter Computer oder beliebiger anderer Computertyp sein; die Erfindung hat keine diesbezügliche Beschränkung.
  • Der Systembus 23 kann ein beliebiger von mehreren Typen von Busstrukturen sein, einschließlich eines Speicherbusses oder eines Speichercontrollers, eines Peripheriebusses und eines lokalen Busses unter Verwendung einer beliebigen einer Anzahl von Busarchitekturen. Der Systemspeicher kann auch einfach als Speicher bezeichnet werden, und er verfügt über einen Festwertspeicher (ROM) 24 und einen Direktzugriffsspeicher (RAM) 25. Im ROM 24 ist ein grundlegendes Eingabe/Ausgabe-System (BIOS) 26 gespeichert, das die Grundroutinen enthält, die dazu beitragen, Information zwischen Elementen innerhalb des Computers 20, wie während des Starts, zu übertragen. Der Computer 20 enthält ferner ein Festplatten-Laufwerk 27, um von einer nicht dargestellten Festplatte zu lesen und auf sie zu schreiben, ein Magnetplatten-Laufwerk 28, um von einer entnehmbaren Magnetplatte 29 zu lesen oder auf sie zu schreiben, und ein optisches Plattenlaufwerk 30, um von einer entnehmbaren optischen Platte 31 wie einer CD-ROM oder einem anderen optischen Medium zu lesen oder auf es zu schreiben.
  • Das Festplatten-Laufwerk 27, das Magnetplatten-Laufwerk 28 und das optische Plattenlaufwerk 30 sind durch eine Festplattenlaufwerk-Schnittstelle 32, eine Magnetplattenlaufwerk-Schnittstelle 33 bzw. eine Schnittstelle 34 für optische Plattenlaufwerke mit dem Systembus 23 verbunden. Die Laufwerke und die ihnen zugeordneten computerlesbaren Medien bilden einen nichtflüchtigen Speicher mit computerlesbaren Anweisungen, Datenstrukturen, Programmmodulen und anderen Daten für die Computer 20. Der Fachmann erkennt, dass in der beispielhaften Betriebsumgebung jeder beliebige Typ an computerlesbaren Medien verwendet werden kann, die Daten speichern, auf die ein Computer zugreifen kann, wie Magnetkassetten, Flashspeicherkarten, digitale Videoplatten, Bernoulli-Kassetten, Direktzugriffsspeicher (RAMs), Festwertspeicher (ROMs) und dergleichen.
  • Auf der Festplatte, der Magnetplatte 29, der optischen Platte 31, dem ROM 24 oder dem RAM 25 kann eine Anzahl von Programmmodulen gespeichert sein, einschließlich eines Betriebssystems 35, eines Anwendungsprogramms 36 oder mehrerer, anderer Programmmodule 37 und Programmdaten 38. Ein Benutzer kann über Eingabevorrichtungen wie eine Tastatur 40 und eine Zeigervorrichtung 42 Befehle und Information in den PC 20 eingeben. Zu anderen Eingabevorrichtungen (nicht dargestellt) können ein Mikrofon, ein Joystick, ein Gamepad, eine Satellitenschüssel, ein Scanner oder dergleichen gehören. Diese und andere Eingabevorrichtungen sind häufig über eine Schnittstelle 46 mit seriellem Port, die mit dem Systembus verbunden ist, mit der Verarbeitungseinheit 21 verbunden, jedoch können sie durch andere Schnittstellen angeschlossen sein, wie einen Parallelport, einen Gameport oder eine Universal Serial Bus (USB). Mit dem Systembus 23 ist über eine Schnittstelle, die einen Videoadapter 48, auch ein Monitor 47 oder ein anderer Typ einer Anzeigevorrichtung verbunden. Zusätzlich zum Monitor verfügen Computer typischerweise über andere periphere Ausgabevorrichtungen (nicht dargestellt), wie Lautsprecher und Drucker.
  • Der Computer 20 kann in einer Netzwerkumgebung unter Verwendung logischer Verbindungen zu einem oder mehreren entfernten Computern, wie einem entfernten Computer 49, arbeiten.
  • Diese logischen Verbindungen werden durch eine Kommunikationsvorrichtung bewerkstelligt, die mit dem Computer 20 oder einem Teil desselben verbunden ist; die Erfindung ist auf keinen speziellen Typ einer Kommunikationsvorrichtung beschränkt. Der Ferncomputer 49 kann ein anderer Computer, ein Server, ein Router, ein Netzwerk-PC, ein Client, ein Peer-Gerät oder ein anderer üblicher Netzwerkknoten sein, und typischerweise enthält er viele oder alle Elemente, die oben in Zusammenhang mit dem Computer 20 beschrieben wurden, obwohl in der 1 nur eine Speichervorrichtung 50 dargestellt ist. Zu den in der 1 dargestellten logischen Verbindungen gehören ein lokales Netz (LAN) 51 und ein Weitbereichsnetz (WAN) 52. Derartige Netzwerkumgebungen sind in Büronetzwerken, unternehmensweiten Computernetzen, Intranets und dem Internet, die alle Typen von Netzwerken sind, üblich.
  • Wenn der Computer 20 in einer LAN-Netzwerkumgebung genutzt wird, ist er über eine Netzwerkschnittstelle oder einen Adapter 53, wobei es sich um einen Typ einer Kommunikationsvorrichtung handelt, mit dem lokalen Netzwerk 51 verbunden. Wenn der Computer 20 in einer WAN-Netzwerksumgebung verwendet wird, enthält er typischerweise ein Modem 54, einen Typ einer Kommunikationsvorrichtung, oder irgendeinen anderen Typ einer Kommunikationsvorrichtung, um für Kommunikationsvorgänge über das Weitbereichsnetz 52, wie das Internet, zu sorgen. Das Modem 54, das intern oder extern sein kann, ist über die Schnittstelle 46 mit seriellem Port mit dem Systembus 23 verbunden. In einer Netzwerkumgebung können Programmmodule, die in Beziehung zum PC 20, oder Teilen desselben, dargestellt sind, in der Fern-Speichervorrichtung gespeichert sein. Es ist zu beachten, dass die Netzwerksverbindungen beispielhaft dargestellt sind und dass andere Maßnahmen und Kommunikationsvorrichtungen zum Errichten einer Kommunikation-Übertragungsstrecke zwischen den Computern verwendet werden können.
  • Es wurde die Hardware- und Betriebsumgebung beschrieben, in deren Zusammenhang Ausführungsformen der Erfindung realisiert werden können. Der Computer, in dessen Zusammenhang Ausführungsformen der Erfindung realisiert werden können, kann ein herkömmlicher Computer, ein verteilter Computer oder ein beliebiger anderer Computertyp sein, wobei die Erfindung hierzu keine Beschränkung zeigt. Ein derartiger Computer enthält typischerweise eine oder mehrere Verarbeitungseinheiten als Prozessor sowie ein computerlesbares Medium wie einen Speicher. Der Computer kann auch eine Kommunikationsvorrichtung wie einen Netzwerkadapter oder ein Modem aufweisen, so dass er dazu in der Lage ist, kommunizierend mit anderen Computern verbunden zu werden.
  • Überblick auf Systemebene
  • Die 2(a) zeigt einen Überblick auf Systemebene über eine Technik zum Entfernen vorübergehender Objekte während des Betriebs eines Programms oder einer Funktion 204 innerhalb der Umgebung einer virtuellen Java-Maschine (JVM) 208, ähnlich derjenigen, wie sie im bereits genannten Dokument "Inside the Java Virtual Machine" von Jordan Olin ist. JVM ist ein natives Programm, das innerhalb eines Betriebssystems läuft, um das Programm oder die Funktion 204 zu interpretieren und auszuführen. Das Programm oder die Funktion 204 bei dieser Implementation ist Java-Code.
  • Während des Ausführens des Programms oder der Funktion 204 können bestimmte Befehle eine Zuordnung von Objekten von einem Heap 212 veranlassen, z. B. durch das Herstellen einer Beziehung einer Variablen mit einem Objekt. Der Heapmanager 216 verfolgt eine Adresse im Heap 212, aus dem Objekte zugeordnet werden können. Wenn immer mehr Objekte aus dem Heap 212 zugeordnet werden, ist es möglich, dass der Heapmanager 216 beim Betriebssystem zusätzlichen Speicherraum anfordert. Wenn ein Objekt vom Heap 212 zugeordnet wird, wird ihm auch ein Bezugszählwert zugewiesen. Immer dann, wenn ein Bezugswert den Bereich verlässt, wird der Bezugszählwert des Objekts, das mit der Variablen in Beziehung steht, inkrementiert. Jedes Objekt mit dem Bezugszählwert null ist ein Kandidat zur Speicherbereinigung.
  • Die Speicherbereinigungseinrichtung 220 scannt, wenn sie aktiviert ist, den Heap 212 nach Objekten mit dem Bezugszählwert 0 durch, und sie macht den durch ein solches Objekt belegten Speicher für zukünftigen Gebrauch frei. Die Funktion der Speicherbereinigungseinrichtung 220 ist in der Technik bekannt, jedoch führt Java im Wesentlichen eine Speicherbereinigung unter den folgenden Bedingungen aus: (1) immer dann wenn es erforderlich ist (wenn die Menge des im Heap 212 verbliebenen Speichers unter einen vorbestimmten Wert fällt, wird eine Speicherbereinigung ausgeführt, um alles an Speicher wiederzugewinnen, was wiedergewinnbar ist; (2) immer dann wenn Speicherbereinigung angefordert wird – eine Speicherbereinigung kann durch Java dadurch erzwungen werden, dass "System.gc" aufgerufen wird, wobei es sich um Speicherbereinigungseinrichtung von Java handelt; oder (3) immer dann, wenn Java einen Hintergrundtask ausführt, der nach wiederzugewinnenden Objekten sucht.
  • Die 2(b) zeigt eine inkrementelle Speicherbereinigungseinrichtung 270 als Ausführungsform der Erfindung. Die inkrementelle Speicherbereinigungseinrichtung 270 ist ein integraler Teil der JVM. Wie beim Stand der Technik verfolgt der Heapmanager 266 eine Adresse im Heap 262, aus den Objekte zugeordnet werden können. Wenn einmal eine Funktion 254 aktiviert ist oder ausgeführt wird, speichert die inkrementelle Speicherbereinigungseinrichtung 270 die Adresse vom Heapmanager 266, die den nächsten Speicher anzeigt, aus dem Objekte zugeordnet werden können. Wenn die Funktion 254 verlassen wird, speichert die inkrementelle Speicherbereinigungseinrichtung 270 die Adresse des letzten Objekts, das aus dem Heap 262 zugeordnet wurde. Während des Ausführens der Funktion 254 innerhalb der Umgebung der JVM 258 wird, wenn Objekte vom Heap 262 aus zugeordnet werden, Zusatzinformation im Objekt gespeichert, was die Identifizierung eines derartigen Objekts durch das inkrementelle Speicherbereinigungsmodul 270 zu einem späteren Zeitpunkt erleichtert.
  • Darüber hinaus verfügt, wie bereits angegeben, die inkrementelle Speicherbereinigungseinrichtung 270 über Information betreffend den Bereich des Heaps, der durch die Funktion 254 zugeordnet wurde – im Wesentlichen die Anfangs- und die Endadresse der Objekte, die vom Heap 262 weg zugeordnet wurden. Sobald das Programm oder die Funktion 254 endet oder verlassen wird, scannt das inkrementelle Speicherbereinigungsmodul 270, ausgehend von der Anfangs- zur Endadresse der vom Heap aus zugeordneten Objekte, den Heap durch, und es liest die in den Objekten gespeicherte Zusatzinformation. Wenn die inkrementelle Speicherbereinigungseinrichtung 270 ein Objekt als wertlose Daten identifiziert, führt sie sofort eine Wiedergewinnung des durch dieses Objekt belegten Raums aus und macht ihn zum Gebrauch verfügbar. Demgemäß führt die inkrementelle Speicherbereinigungseinrichtung 270 eine Wiedergewinnung des durch das Objekt belegten Raums aus, ohne dass sie auf den Betrieb der Speicherbereinigungseinrichtung 274 warten würde. Außerdem muss die inkrementelle Speicherbereinigungseinrichtung 270 nicht den gesamten Heap durchscannen, sondern nur von der Anfangs- zur Endadresse des zugeordneten Bereichs des Heaps anstatt des gesamten Heaps.
  • Obwohl die Speicherbereinigungseinrichtung 220 und 272 oben hinsichtlich einer Bezugswert-Zähltechnik beschrieben sind, sind in der Technik andere Techniken zur Speicherbereinigung bekannt. Zu diesen anderen Techniken gehören z. B. zurückgestellten Bezugswertzählen (deferred reference counting), durchfahrendes Sammeln von Markierungen (mark-sweep collection), kompaktes Sammeln von Markierungen (mark-compact collection) und kopierende Speicherbereinigung.
  • Verfahren einer Ausführungsform der Erfindung
  • Der vorige Abschnitt beschreibt den Betrieb einer Ausführungsform der Erfindung aus Systemebene. Dieser Abschnitt beschreibt Verfahren, wie sie durch einen Computer einer derartigen Ausführungsform ausgeführt werden.
  • In einem Schritt 300 im Flussdiagramm der 3 wird ein Programm- oder Funktionsbefehl oder ein Code ausgeführt. In einem Schritt 302 wird ermittelt, ob der ausgeführte Code eine Zuordnung von Objekten vom Heap weg benötigt. Wenn im Schritt 302 ermittelt wird, dass der Code keine Objekte vom Heap weg zuordnet, geht die Steuerung zu einem Schritt 306 über. Andernfalls, wenn nämlich im Schritt 302 ermittelt wird, dass der Code Objekte vom Heap weg zuordnet, geht die Steuerung zu einem Schritt 304 weiter.
  • Im Schritt 304 wird Information zum Objekt im Objekt, das zugeordnet wird, abgespeichert. Die im Objekt abgespeicherte Information wird unten vollständiger erörtert. Dann geht die Steuerung mit dem Schritt 306 weiter, in dem ermittelt wird, ob das Ende des Programms oder der Funktion erreicht ist. Wenn das Ende des Programms oder der Funktion noch nicht erreicht ist, wird in einem Schritt 308 der nächste Befehl abgerufen und dann geht die Steuerung zum Schritt 300 über. Wenn jedoch im Schritt 306 ermittelt wird, dass das Ende des Programms oder der Funktion erreicht ist, wird in einem Schritt 310 eine inkrementelle Speicherbereinigung ausge führt.
  • Die 4 zeigt die zum Objekt hinzugefügte Information, wie oben erörtert. Diese Information beinhaltet (1) eine Threadkennung 315 für die Funktion oder das Programm, das das Objekt zuordnet (2) eine Funktions- oder Stacknummer 320 und (3) ein Markierungsbit 325, das dann, wenn es gesetzt ist, anzeigt, dass das Objekt in jedem Fall außerhalb der Funktion gespeichert ist. Die Threadkennung 315 wird entweder vom Betriebssystem oder der JVM erfasst, und sie ist in der Technik bekannt. Die Funktions- oder Stacknummer 320 ist eine Art zum Kennzeichnen, welche Funktion das Objekt zugeordnet hat. Wenn eine Funktion ("Funktion 1") eine andere Funktion ("Funktion 2") aufruft, haben beide dieselbe Threadkennung. Es ist wesentlich, dass dann, wenn die Funktion 2 verlassen wird und die inkrementelle Speicherbereinigungseinrichtung aktiviert wird, die durch die Funktion 1 zugeordneten Objekte für die Funktion 1 immer noch verfügbar sind.
  • Das Markierungsbit 325 wird, wie oben angegeben, dann gesetzt, wenn das Objekt auf irgendeine Weise außerhalb der Funktion gespeichert wird. Ein Objekt, das nicht außerhalb der Funktion gespeichert wird, die das Objekt zugeordnet hat, wird als lokal für die Funktion bezeichnet. Zum Beispiel wird das Markierungsbit 325 dann gesetzt, wenn das Objekt in einer globalen Variablen gespeichert, rückgeliefert oder als Ausnahme ausgeworfen wird.
  • Normalerweise wird das Markierungsbit 325 auch dann für ein Objekt ("Objekt 1") gesetzt, wenn das Objekt 1 in ein anderes Objekt ("Objekt 2") gespeichert wird. Wenn jedoch das Objekt 2 (in dem das Objekt 1 gespeichert wird) derselben Funktion zugeordnet ist, die das Objekt 1 zuordnete, und wenn auf das Objekt 2 nicht außerhalb derselben Funktion Be zug genommen wird, wird das Markierungsbit 325 weder für das Objekt 1 noch das Objekt 2 gesetzt. Wenn jedoch das Markierungsbit 325 des Objekts 2 später gesetzt wird untersucht die inkrementelle Speicherbereinigungseinrichtung alle im Objekt 2 gespeicherten Objekte. Wenn ein im Objekt 2 gespeichertes Objekt über kein gesetztes Markierungsbit verfügt, setzt die inkrementelle Speicherbereinigungseinrichtung das Markierungsbit zu diesem Zeitpunkt. Außerdem wird das Markierungsbit 325 für das genutzte Objekt auch immer dann gesetzt, wenn einer der folgenden Befehle ausgeführt wird: AASTORE, ARETURN, ATHROW, PUTFIELD, PUTFIELD FAST, PUTSTATIC oder PUTSTATIC FAST. Diese Liste nicht erschöpfend – gemäß eine allgemeinen Regel wird das Markierungsbit 325 für solche Objekte gesetzt, die von Befehlen (wie den oben aufgelisteten) verwendet werden, die die Objekte außerhalb der Funktion speichern können oder dies tatsächlich vornehmen.
  • Die 5 zeigt die Schritte, wie sie vom inkrementellen Speicherbereinigungsmodul ausgeführt werden, wenn es den Heap durchscannt und die in den Objekten gespeicherte Zusatzinformation liest. Die inkrementelle Speicherbereinigungseinrichtung ruft in einem Schritt 400 ein Objekt vom Heap ab, und dann ermittelt sie in einem Schritt 402, ob die im Objekt gespeicherte Threadkennung derjenigen der Funktion oder des Programms entspricht, das die inkrementelle Speicherbereinigungseinrichtung aufgerufen hat. Wenn die Threadkennung des Objekts keine Entsprechung zeigt, geht die Steuerung zu einem Schritt 416 weiter. Wenn die Threadkennung Entsprechung zeigt, geht die Steuerung zu einem Schritt 404 über, in dem ermittelt wird, ob die Stacknummer der durch die aufrufende Funktion zugewiesenen Nummer entspricht. Wenn die Stacknummer keine Entsprechung zeigt, geht die Steuerung zum Schritt 316 über. Wenn die Stacknummer Entsprechung zeigt, geht die Steuerung zu einem Schritt 406 über, in dem ermittelt wird, ob das im Objekt gespeicherte Markierungsbit gesetzt ist.
  • Wenn das Markierungsbit gesetzt ist, geht die Steuerung zu einem Schritt 408 über, in dem ermittelt wird, ob das Objekt in einem anderen Objekt (d. h. einem Objekt 2) mit derselben Thread-ID und derselben Stacknummer gespeichert wurde. Falls nicht, geht die Steuerung zum Schritt 416 über, in dem ermittelt wird, ob das Ende des Objektheaps erreicht ist. Wenn das Objekt in einem anderen Objekt mit derselben Thread-ID und derselben Stacknummer gespeichert ist, geht die Steuerung zu einem Schritt 410 über, in dem ermittelt wird, ob das Markierungsbit für das Objekt 2 gesetzt ist. Wenn dies der Fall ist, geht die Steuerung zum Schritt 416 über. Wenn das Markierungsbit für das Objekt 2 nicht gesetzt ist, geht die Steuerung zu einem Schritt 412 über, in dem ermittelt wird, ob irgendwo sonst auf das Objekt Bezug genommen ist. Wenn dies der Fall ist, geht die Steuerung zum Schritt 416 über. Wenn nirgendwo sonst auf das Objekt Bezug genommen wird, wird der durch das Objekt belegte Raum in einem Schritt 414 wiedergewonnen.
  • Wenn im Schritt 406 das Markierungsbit nicht gesetzt ist, wird der durch das Objekt belegte Raum im Schritt 414 wiedergewonnen und die Steuerung geht zum Schritt 416 über. Im Schritt 416 wird ermittelt, ob das Ende des Objektheaps erreicht ist. Wenn das Ende des Objektheaps noch nicht erreicht ist, zeigt die inkrementelle Speicherbereinigungseinrichtung auf das nächste Objekt, wie im Schritt 418 dargestellt, und die Steuerung geht zum Schritt 400 über. Andernfalls, wenn das Ende des Objektheaps erreicht ist, beendet inkrementelle Speicherbereinigungseinrichtung ihre Arbeit.
  • Fig. 1
  • 21
    Verarbeitungseinheit
    23
    Systembus
    25
    Systemspeicher
    32
    Schnittstelle für das Festplatten-Laufwerk
    33
    Schnittstelle für das Magnetplatten-Laufwerk
    34
    Schnittstelle für das optische Laufwerk
    35
    Betriebssystem
    36
    Anwendungsprogramme
    37
    Andere Programmmodule
    38
    Programmdaten
    47
    Monitor
    48
    Videoadapter
    51
    Lokales Netzwerk
    52
    Weitbereichsnetz

Claims (12)

  1. Verfahren in einem Computersystem, das eine Verarbeitungseinheit, einen Systemspeicher und mehrere Programmodule enthält, wobei mindestens ein Teil des Systemspeichers einen Heap (262) enthält, aus dem Objekte dynamisch zugeordnet werden können, und wobei die Programmodule ein oder mehrere Programme oder Funktionen (254), die für eines oder mehrere Objekte Speicher aus dem Heap (262) dynamisch zuordnen können, und einen Haupt-Garbagekollektor (274) enthalten, der den gesamten Heap (262) prüfen kann, wenn er periodisch versucht, Speicher wiederzugewinnen, der von dem einen oder den mehreren Programmen oder Funktionen (254) für das eine oder die mehreren Objekte zugeordnet wurde, wobei das Verfahren unmittelbar, nachdem die Funktion oder das Programm (254), die bzw. das das eine oder die mehreren Objekte zugeordnet hat, entweder beendet ist oder verlassen wird, das inkrementelle Wiedergewinnen mindestens eines gewissen Teils des dynamisch zugeordneten Speichers betreibt, der dem einen oder den mehreren Objekten zugehört, anstatt auf den Haupt-Garbagekollektor (274) zu warten, und wobei das Verfahren die folgenden Schritte aufweist: für ein Objekt, das zugeordnet wurde, Speichern einer zusätzlichen Information innerhalb des Objekts selbst, die eine Markierung (325) beinhaltet, die angibt, ob das Objekt für die Funktion oder das Programm (254), die bzw. das das Objekt zunächst dynamisch zugeordnet hat, lokal ist, wobei das Objekt für die Funktion oder das Programm lokal ist, wenn es entsprechenderweise nicht außerhalb der Funktion oder des Programms gespeichert ist, unmittelbar nachdem die Funktion oder das Programm, die bzw. das das Objekt anfänglich dynamisch zugeordnet hat, entweder endet oder verlassen wird und bevor der Haupt-Garbagekollektor (274) die Wiedergewinnung von Speicher versucht, Prüfen der zusätzlichen Information für mindestens ein von der Funktion oder dem Programm (254) zugeordnetes Objekt, um zu bestimmen, ob das mindestens eine Objekt eine Markierung aufweist, die angibt, daß es für die Funktion oder das Programm (254) lokal ist, wenn das mindestens eine Objekt für die Funktion oder das Programm lokal ist, Wiedergewinnen des dem mindestens einen Objekt zugehörigen dynamisch zugeordneten Speichers, und wenn das mindestens eine Objekt nicht lokal für die Funktion oder das Programm (254) ist, Verschieben jedes weiteren Versuchs, den dem mindestens einen Objekt zugehörigen dynamisch zugeordneten Speicher wiederzugewinnen, auf einen späteren Zeitpunkt.
  2. Verfahren nach Anspruch 1, mit folgenden Schritten: vor dem Zuordnen irgendeines Objekts, Speichern eines Anfangs-Heap-Orts, von dem aus Objekte dynamisch zugeordnet werden können, Speichern eines End-Heap-Orts eines letzten dynamisch zuzuordnenden Objekts, zwischen dem Anfangs-Heap-Ort und dem End-Heap-Ort, Nehmen (400) eines oder mehrerer Objekte aus dem Heap (262), um die zusätzliche Information für jedes der einen oder mehreren Objekte zu prüfen und zu bestimmen, ob das eine bzw. die mehreren Objekte lokal sind, wobei das Nehmen das mindestens eine Objekt umfaßt.
  3. Verfahren nach Anspruch 1 oder 2, wobei die zusätzliche Information eine Thread-Identifizierung (315) und eine Stack-Identifizierung (320) beinhaltet und das Verfahren außerdem Schritte zum Prüfen der zusätzlichen Information für jedes der einen oder mehreren Objekte, die vom Heap (262) genommen wurden, beinhaltet, um zu bestimmen, welches der vom Heap genommenen einen oder der mehreren Objekte von dem Programm oder der Funktion (254) zugeordnet wurden.
  4. Verfahren nach Anspruch 1, 2 oder 3, mit folgenden weiteren Schritten: kontinuierliches Überwachen (412) des mindestens einen Objekts während der Ausführung des Programms oder der Funktion (254), die das mindestens eine Objekt dynamisch zugeordnet hat, um zu bestimmen, ob auf das mindestens eine Objekt von außerhalb des Programms oder der Funktion (254) Bezug genommen wird, und wenn auf das mindestens eine Objekt von außerhalb des Programms oder der Funktion (254) Bezug genommen wird, Setzen der genannten Markierung, um anzugeben, daß das mindestens eine Objekt nicht lokal ist.
  5. Verfahren nach einem der Ansprüche 1 bis 4, wobei auf das mindestens eine Objekt in einem Bezug nehmenden Objekt Bezug genommen wird und das Verfahren außerdem das Setzen der Markierung des mindestens einen Objekts zur Angabe, daß dieses nicht lokal ist, beinhaltet, wenn das Bezug nehmende Objekt und das mindestens eine Objekt von einem anderen Programm oder einer anderen Funktion zugeordnet sind oder auf das Bezug nehmende Objekt von außerhalb des Programms oder der Funktion (254) Bezug genommen wird.
  6. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Programm oder die Funktion (254) innerhalb einer virtuellen Java-Maschine (258) ausgeführt wird.
  7. Computersystem, aufweisend eine Verarbeitungseinheit (21), einen Systemspeicher (22) und mehrere Programmodule (36, 37), wobei mindestens ein Teil des Systemspeichers (22) einen Heap (262) beinhaltet, aus dem Objekte dynamisch zugeordnet werden können, und wobei die Programmodule ein oder mehrere Programme oder Funktionen (254), die für eines oder mehrere Objekte Speicher aus dem Heap (262) dynamisch zuordnen können, und einen Haupt-Garbagekollektor (274) beinhalten, der den gesamten Heap (262) prüfen kann, wenn er peri odisch versucht, Speicher wiederzugewinnen, der von dem einen oder den mehreren Programmen oder Funktionen (254) für das eine oder die mehreren Objekte dynamisch zugeordnet wurde, gekennzeichnet durch: eine Einrichtung, um für ein zugeordnetes Objekt eine zusätzliche Information innerhalb des Objekts selbst zu speichern, die eine Markierung (325) beinhaltet, die angibt, ob das Objekt für die Funktion oder das Programm (254), die bzw. das das Programm zunächst dynamisch zugeordnet hat, lokal ist, wobei das Objekt für die Funktion oder das Programm lokal ist, wenn es entsprechenderweise nicht außerhalb der Funktion oder des Programms gespeichert ist, eine Einrichtung (270), die unmittelbar anspricht, nachdem die Funktion oder das Programm, die bzw. das das Objekt anfänglich dynamisch zugeordnet hat, entweder endet oder verlassen wird und bevor der Haupt-Garbagekollektor (274) versucht, Speicher wiederzugewinnen, um die von der Speichereinrichtung für mindestens ein von der Funktion oder dem Programm zugeordnetes Objekt gespeicherte zusätzliche Information zu prüfen und zu bestimmen, ob das mindestens eine Objekt eine Markierung aufweist, die angibt, daß es für die Funktion oder das Programm (254) lokal ist, und um dann, wenn das mindestens eine Objekt lokal für die Funktion oder das Programm ist, unmittelbar nachdem die Funktion oder das Programm (254), die bzw. das das eine oder die mehreren Objekte zugeordnet hat, entweder endet oder verlassen wird, den dem mindestens einen Objekt zugehörigen dynamisch zugeordneten Speicher wiederzugewinnen, anstatt auf den Haupt-Garbagekollektor (274) zu warten, und wenn das mindestens eine Objekt für die Funktion oder das Programm (254) nicht lokal ist, jeden weiteren Versuch, dem mindestens einen Objekt zugehörigen dynamisch zugeordneten Speicher wiederzugewinnen, auf einen späteren Zeitpunkt zu verschieben.
  8. Computersystem nach Anspruch 7, wobei die genannte Speichereinrichtung betreibbar ist, um vor dem Zuordnen irgendei nes Objekts einen Anfangs-Heap-Ort, von dem aus Objekte dynamisch zugeordnet werden können, zu speichern, und einen End-Heap-Ort eines letzten dynamisch zuzuordnenden Objekts zu speichern, und wobei die genannte ansprechende Einrichtung betreibbar ist, eines oder mehrere Objekte zwischen dem Anfangs-Heap-Ort und dem End-Heap-Ort aus dem Heap (262) zu nehmen und für jedes der einen oder mehreren Objekte die zusätzliche Information zu prüfen und zu bestimmen, ob jedes der einen oder mehreren Objekte lokal ist.
  9. Computersystem nach Anspruch 7, wobei die Speichereinrichtung betreibbar ist, eine zusätzliche Information einschließlich einer Thread-Identifizierung (315) und einer Stack-Identifizierung (320) zu speichern und die genannte ansprechende Einrichtung betreibbar ist, für jedes der einen oder mehreren vom Heap (262) genommenen Objekte die zusätzliche Information zu prüfen und zu bestimmen, welches der einen oder mehreren vom Heap genommenen Objekte von dem Programm oder der Funktion (254) zugeordnet wurde.
  10. Computersystem nach einem der Ansprüche 7 bis 9, aufweisend: eine Einrichtung zum kontinuierlichen Überwachen des mindestens einen Objekts während der Ausführung des Programms oder der Funktion (254), das bzw. die das mindestens eine Objekt dynamisch zugeordnet hat, um zu bestimmen, ob auf das mindestens eine Objekt von außerhalb des Programms oder der Funktion (254) Bezug genommen wird, und dann, wenn auf das mindestens eine Objekt von außerhalb des Programms oder der Funktion (254) Bezug genommen wird, die Markierung zu setzen, um anzugeben, daß das mindestens eine Objekt nicht lokal ist.
  11. Computersystem nach Anspruch 10, wobei die Einrichtung zum kontinuierlichen Überwachen betreibbar ist, die Markierung des mindestens einen Objekts zu setzen, um anzugeben, daß das mindestens eine Objekt nicht lokal ist, wenn das Bezug nehmende Objekt und das mindestens eine Objekt von einem anderen Programm oder einer anderen Funktion zugeordnet sind, oder auf das Bezug nehmende Objekt von außerhalb des Programms oder der Funktion (254) Bezug genommen wird.
  12. Computerprogrammprodukt mit einem computerlesbaren Medium mit darauf gespeicherten computerausführbaren Anweisungen, um zu bewirken, daß ein programmierbarer Computer mit einer Verarbeitungseinheit und einem Systemspeicher das Verfahren nach einem der Ansprüche 1 bis 6 ausführt, wenn das Computerprogrammprodukt auf dem programmierbaren Computer ausgeführt wird.
DE69814170T 1997-12-19 1998-12-17 Inkrementeller freispeichersammler Expired - Lifetime DE69814170T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US99409897A 1997-12-19 1997-12-19
US994098 1997-12-19
PCT/US1998/026769 WO1999032978A1 (en) 1997-12-19 1998-12-17 Incremental garbage collection

Publications (2)

Publication Number Publication Date
DE69814170D1 DE69814170D1 (de) 2003-06-05
DE69814170T2 true DE69814170T2 (de) 2004-04-01

Family

ID=25540275

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69814170T Expired - Lifetime DE69814170T2 (de) 1997-12-19 1998-12-17 Inkrementeller freispeichersammler

Country Status (7)

Country Link
US (1) US6353838B2 (de)
EP (1) EP1049979B1 (de)
JP (1) JP4177960B2 (de)
AT (1) ATE239253T1 (de)
DE (1) DE69814170T2 (de)
HK (1) HK1032130A1 (de)
WO (1) WO1999032978A1 (de)

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6557091B2 (en) * 1997-08-22 2003-04-29 Koninklijke Philips Electronics N.V. Data processor with localized memory reclamation
US7096238B2 (en) * 1999-08-19 2006-08-22 Sun Microsystems, Inc. Dynamic feedback for determining collection-set size
US6970893B2 (en) 2000-10-27 2005-11-29 Bea Systems, Inc. System and method for regeneration of methods and garbage collection of unused methods
SE514318C2 (sv) * 1999-10-28 2001-02-12 Appeal Virtual Machines Ab Förfarande för att effektivisera en databehandlingsprocess vid användning av en virtuell maskin och där ett skräpsamlingsförfarande används
US6898602B2 (en) * 2002-04-22 2005-05-24 Sun Microsystems Inc. Measuring the exact memory requirement of an application through intensive use of garbage collector
FR2839650B1 (fr) * 2002-05-17 2005-04-01 Ela Medical Sa Systeme de teleassistance pour la programmation des dispositifs medicaux implantables actifs tels que stimulateurs cardiaques, defibrillateurs, cardioverteurs ou dispositifs multisite
US7174354B2 (en) * 2002-07-31 2007-02-06 Bea Systems, Inc. System and method for garbage collection in a computer system, which uses reinforcement learning to adjust the allocation of memory space, calculate a reward, and use the reward to determine further actions to be taken on the memory space
US6999979B2 (en) * 2002-11-05 2006-02-14 Sun Microsystems, Inc. Efficient encoding of references into a collection set
US7539713B2 (en) 2002-11-05 2009-05-26 Sun Microsystems, Inc. Allocation of likely popular objects in the train algorithm
US7035884B2 (en) * 2002-11-05 2006-04-25 Sun Microsystems, Inc. Placement of allocation trains 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
US7069280B2 (en) * 2002-12-06 2006-06-27 Sun Microsystems, Inc. Collection-tick mechanism for a collector based on the train algorithm
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
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
US7085790B2 (en) * 2002-12-06 2006-08-01 Sun Microsystems, Inc. Advancing cars in trains managed by a collector based on the train algorithm
US7143124B2 (en) 2002-12-06 2006-11-28 Sun Microsystems, Inc. Detection of dead regions during incremental collection
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
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
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
US7237231B2 (en) * 2003-03-10 2007-06-26 Microsoft Corporation Automatic identification of input values that expose output failures in a software object
US20040181562A1 (en) * 2003-03-13 2004-09-16 Piotr Findeisen System and method for determining deallocatable memory in a heap
US20040181782A1 (en) * 2003-03-13 2004-09-16 Piotr Findeisen System and method for optimizing memory usage by locating lingering objects
US20040186863A1 (en) * 2003-03-21 2004-09-23 Garthwaite Alexander T. Elision of write barriers for stores whose values are in close proximity
US7089272B1 (en) 2003-06-18 2006-08-08 Sun Microsystems, Inc. Specializing write-barriers for objects in a garbage collected heap
US7340493B2 (en) 2003-07-02 2008-03-04 International Business Machines Corporation System and method for reducing memory leaks in virtual machine programs
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
US7412694B2 (en) * 2003-09-18 2008-08-12 International Business Machines Corporation Detecting program phases with periodic call-stack sampling during garbage collection
US7404182B1 (en) 2003-10-03 2008-07-22 Sun Microsystems, Inc. Deferring and combining write barriers for a garbage-collected heap
US20050198088A1 (en) * 2004-03-03 2005-09-08 Sreenivas Subramoney Method and system for improving the concurrency and parallelism of mark-sweep-compact 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
US7380087B2 (en) * 2004-08-25 2008-05-27 Microsoft Corporation Reclaiming application isolated storage
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
US7870170B2 (en) * 2005-05-03 2011-01-11 International Business Machines Corporation Method and apparatus for determining leaks in a Java heap
US8601469B2 (en) * 2007-03-30 2013-12-03 Sap Ag Method and system for customizing allocation statistics
US20080243970A1 (en) * 2007-03-30 2008-10-02 Sap Ag Method and system for providing loitering trace in virtual machines
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
US8522209B2 (en) * 2007-03-30 2013-08-27 Sap Ag Method and system for integrating profiling and debugging
US8336033B2 (en) * 2007-03-30 2012-12-18 Sap Ag Method and system for generating a hierarchical tree representing stack traces
US7904493B2 (en) * 2007-03-30 2011-03-08 Sap Ag Method and system for object age detection in garbage collection heaps
US8140597B2 (en) * 2007-08-29 2012-03-20 International Business Machines Corporation Computer system memory management
US7991808B2 (en) * 2008-05-21 2011-08-02 Apple Inc. Per thread garbage collection
US8880775B2 (en) * 2008-06-20 2014-11-04 Seagate Technology Llc System and method of garbage collection in a memory device
US8200718B2 (en) * 2009-07-02 2012-06-12 Roberts Michael L Parallelized, incremental garbage collector
GB2499187A (en) * 2012-01-31 2013-08-14 Ibm Evicting from a cache objects which are not referenced by other objects in the cache
US9021050B2 (en) * 2012-08-31 2015-04-28 Yume, Inc. Network service system and method with off-heap caching
US9489297B2 (en) * 2013-01-21 2016-11-08 Sandisk Technologies Llc Pregroomer for storage array
US9355029B2 (en) * 2013-06-28 2016-05-31 Sap Se Thread-based memory management with garbage collection
US9880743B1 (en) * 2016-03-31 2018-01-30 EMC IP Holding Company LLC Tracking compressed fragments for efficient free space management
US20230350802A1 (en) * 2022-04-29 2023-11-02 Oracle International Corporation Managing lifecycles of sets of foreign resources

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4797810A (en) * 1986-06-26 1989-01-10 Texas Instruments Incorporated Incremental, multi-area, generational, copying garbage collector for use in a virtual address space
US5136706A (en) 1987-04-30 1992-08-04 Texas Instruments Incorporated Adaptive memory management system for collection of garbage in a digital computer
US5088036A (en) * 1989-01-17 1992-02-11 Digital Equipment Corporation Real time, concurrent garbage collection system and method
US5560003A (en) * 1992-12-21 1996-09-24 Iowa State University Research Foundation, Inc. System and hardware module for incremental real time garbage collection and memory management
US5535390A (en) * 1994-07-22 1996-07-09 Hildebrandt; Thomas H. Method for reusing temporaries and reclaiming shared memory
US5960087A (en) 1996-07-01 1999-09-28 Sun Microsystems, Inc. Distributed garbage collection system and method
US5848423A (en) * 1997-04-23 1998-12-08 Sun Microsystems, Inc. Garbage collection system and method for locating root set pointers in method activation records
US5893121A (en) * 1997-04-23 1999-04-06 Sun Microsystems, Inc. System and method for swapping blocks of tagged stack entries between a tagged stack cache and an untagged main memory storage
US5873104A (en) * 1997-06-26 1999-02-16 Sun Microsystems, Inc. Bounded-pause time garbage collection system and method including write barrier associated with source and target instances of a partially relocated object
US6070173A (en) * 1997-11-26 2000-05-30 International Business Machines Corporation Method and apparatus for assisting garbage collection process within a java virtual machine
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
US20010037336A1 (en) 2001-11-01
JP4177960B2 (ja) 2008-11-05
HK1032130A1 (en) 2001-07-06
WO1999032978A1 (en) 1999-07-01
ATE239253T1 (de) 2003-05-15
US6353838B2 (en) 2002-03-05
EP1049979A1 (de) 2000-11-08
EP1049979B1 (de) 2003-05-02
DE69814170D1 (de) 2003-06-05
JP2001527237A (ja) 2001-12-25

Similar Documents

Publication Publication Date Title
DE69814170T2 (de) Inkrementeller freispeichersammler
DE69836796T2 (de) Datenverarbeiter mit lokalisierter gedächtnisreklamierung
DE69909021T2 (de) Dynamische Speicherrückforderung ohne Compiler- oder Programmverbinderunterstützung
DE69738101T2 (de) Verwaltung des Zugangs zu Objekten mit Hilfe von Referenzen mit drei Zuständen
US7308466B2 (en) Memory reclamation method
DE69923657T2 (de) Markierung von gespeicherten datenobjekten für garbage-kollektoren
DE69722979T2 (de) Betriebsmittelverwaltungsverfahren und -einrichtung eines Multitasking-Datenverarbeitungssystems
DE60032694T2 (de) Speicherrückforderungsverfahren
DE102012216022B4 (de) Verwaltung einer Zeitpunktkopie-Beziehung für platzsparende Datenträger
DE4208924B4 (de) Verfahren zur Kommunikation zwischen Prozessoren und Parallelverarbeitungscomputer hierfür
DE69936162T2 (de) Verfahren und Gerät für ein objektorientiertes Unterbrechungssystem
EP1393184B1 (de) Vorrichtung und verfahren zum ermitteln einer physikalischen adresse aus einer virtuellen adresse unter verwendung einer hierarchischen abbildungsvorschrift mit komprimierten knoten
DE69737709T2 (de) Verfahren und Vorrichtung für Informationsverarbeitung und Speicherzuordnungsanordnung
US20050102670A1 (en) Shared object memory with object management for multiple virtual machines
DE69728212T2 (de) Speichersteuerung und diese verwendendes Rechnersystem
DE3151745C2 (de)
DE69923658T2 (de) Dynamische speicherplatzzuordnung
DE69918334T2 (de) Erzeugung von kompilierten programmen für interpretative laufzeitumgebungen
DE202010017665U1 (de) Datenverteilung bei einer Datenspeichervorrichtung mit Flash-Speicherchips
WO1999019802A2 (en) Space-limited marking structure for tracing garbage collectors
DE10296957T5 (de) Ein Verfahren zum Verwenden nicht-temporaler Streaming-Speicheroperationen zum Verbessern eines Algorithmus zur Sammlung wertloser Daten
DE112018006769T5 (de) Erweiterte zwischenspeicherzuweisung basierend auf virtuellen knotenressourcen
DE112019001821T5 (de) Verfahren und vorrichtung zur wiedergabe eines aktivierungsrahmens für unterbrechungsfreie speicherbereinigung (pause-less garbage collection)
DE102021107126A1 (de) Zonenzuordnung für datenspeichervorrichtung basierend auf zonenrücksetzverhalten
DE60318993T2 (de) Eingebettete Speicherbereinigung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition