DE60002559T2 - Speicherverwaltung in einer laufzeitumgebung - Google Patents

Speicherverwaltung in einer laufzeitumgebung Download PDF

Info

Publication number
DE60002559T2
DE60002559T2 DE60002559T DE60002559T DE60002559T2 DE 60002559 T2 DE60002559 T2 DE 60002559T2 DE 60002559 T DE60002559 T DE 60002559T DE 60002559 T DE60002559 T DE 60002559T DE 60002559 T2 DE60002559 T2 DE 60002559T2
Authority
DE
Germany
Prior art keywords
storing
information
bit
memory
objects
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
DE60002559T
Other languages
English (en)
Other versions
DE60002559D1 (de
Inventor
Harlan Sexton
David Unietis
Peter Benson
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.)
Oracle Corp
Original Assignee
Oracle 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 Oracle Corp filed Critical Oracle Corp
Publication of DE60002559D1 publication Critical patent/DE60002559D1/de
Application granted granted Critical
Publication of DE60002559T2 publication Critical patent/DE60002559T2/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
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0269Incremental or concurrent garbage collection, e.g. in real-time systems
    • G06F12/0276Generational garbage collection
    • 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/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Preparation Of Compounds By Using Micro-Organisms (AREA)
  • Memory System (AREA)
  • Communication Control (AREA)
  • Storage Device Security (AREA)

Description

  • Bekannte Anmeldungen
  • Die vorliegende Anmeldung steht in Zusammenhang mit den folgenden Anmeldungen: Patentanmeldung WO 0 048 077 A mit dem Titel „A Machine Independent Memory Management System Within a Run-Time Environment", am gleichen Tag hiermit von Harlan Sexton et al. (docket no. 50277-172; OID-199748-02) eingereicht.
  • Patentanmeldung WO 0 048 056 A, mit dem Titel „Address Calculation of Invariant References Within a Run-Time Environment", am gleichen Tag hiermit von Harlan Sexton et al. (docket no. 50277-179; OID-1997-48-03) eingereicht.
  • Patentanmeldung WO 0 048 078 A, mit dem Titel „A Paged Memory Management System Within a Run-Time Environment", am gleichen Tag hiermit von Harlan Sexton et al. (docket no. 50277-261; OID-1997-48-17) eingereicht.
  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft ein Computersystem und spezieller das Verwalten von Speicher für eine Laufzeitausführungsumgebung.
  • Hintergrund der Erfindung
  • In einer dynamischen Laufzeitumgebung für eine Sprache wie beispielsweise JAVA ist die Speicherverwaltung für Objekte sehr wichtig. Im speziellen muss eine dynamische Laufzeitumgebung die Zuweisung und die Freigabe von Speicher für Objekte abwickeln. Ein Objekt ist eine Einheit, die Daten und, in manchen Umgebungen wie beispielsweise JAVA Operationen, verbunden mit dem Objekt, einkapselt.
  • Wenn ein Objekt erzeugt wird muss eine gewisse Speichermenge für das Objekt zugewiesen werden. Wenn das Objekt nicht mehr benötigt wird, muss der Speicher für das Objekt freigegeben werden, so dass er für andere Zwecke wiederverwendet werden kann. Die Speicherfreigabe kann manuell, wie in den C Programmiersprachen erfolgen, oder automatisch von einem „Speicherbereiniger" gehandhabt werden. Es existieren verschiedene Typen von Speicherbereinigern. Z. B. unterscheidet ein Generationsspeicherbereiniger Objekte basierend auf deren Lebenszeit, da ein kürzlich zugewiesenes Objekt üblicherweise ein kurzlebiges Objekt ist. In einer Implementierung eines Generationsspeicherbereinigers werden Objekte in einem von zumindest zwei Speicherbereichen, bezeichnet als „Oldspace" und „Newspace", gespeichert. Wenn ein Objekt erstmals erzeugt wird, wird Speicher für das Objekt aus dem Newspace zugewiesen. Nachdem das Objekt für eine Zeitdauer, wie beispielsweise vier Rückläufe des Newspace, angedauert hat, wird es „tenured" und in den Oldspace migriert.
  • Die Verwendung von verschiedenen Speicherbereichen für Objekte, wobei die verschiedenen Bereiche durch die Lebenszeit der darin enthaltenen Objekte unterschieden wird, erlaubt es dem Generationsspeicherbereiniger verschiedene Zuordnungs- und Speicherbereinigungsstrategien für die Speicherbereiche einzusetzen. Z. B., da der Newspace dazu tendiert, viele Objekte, die häufig zugewiesen und verlassen werden, zu halten, wird die Speicheryuweisung innerhalb des Newspace vorzugsweise durch eine billige Technik wie beispielsweise „frontier consing" (Erhöhen eines Pointers auf den Beginn von freiem Speicher), und die Speicherbereinigung durch einen kopierenden Speicherbereiniger implementiert. Andererseits, da der Oldspace dazu tendiert, weniger und langlebigere Objekte zu halten, kann es bevorzugt sein, die Speicherzweisung durch eine Buddy- oder Best Fit-Zuweisungstechnik, und die Freigabe durch einen Mark-Sweep Speicherbereiniger durchzuführen.
  • Das Leistungsverhalten eines Generationsspeicherbereinigers wird bedeutend von der Effizienz der Berechnung eines „Root Set" für alle Objekte im Newspace beeinflusst. Ein Root Set für den Newspace ist ein Satz von Objekten, derart, dass die transitive Hülle des Satzes alle Live Objekte im Newspace enthält. Im speziellen ist es wichtig, alle Oldspaceobjekte, die Objekte im Newspace referenzieren, zu ermitteln. Ein Verfahren der Vereinfachung der Root Set Berechnung ist, eine „Erinnerungstabelle" zu pflegen, welche eine Datenstruktur ist, die von dem Speicherbereiniger verwendet wird, um aufzuzeichnen, welche Objekte im Newspace von einem Objekt im Oldspace referenziert werden. Die Erinnerungstabelle wird aktualisiert, wenn eine Zuweisungsoperationsmacht eine Referenz zu einem Newspaceobjekt in ein Oldspaceobjekt plaziert. Die Prüfung, die eintritt, um zu ermitteln, ob eine Zuweisungsoperation eine Referenz zu einem Newspaceobjekt in ein Oldspaceobjekt plaziert, wird als „Write Barrier" bezeichnet. Es ist wünschenswert, solche Zuweisungen in einer effizienten Art und Weise zu erfassen.
  • Ein Ansatz zur Erfassung der Zuweisung einer Referenz auf ein Newspaceobjekt in einem Oldspaceobjekt ist es, einen zugehörigen, zusammenhängenden Bereich von Speicherorten für Newspace und Oldspace zu reservieren, und den-Ort der Objekte bezüglich der reservierten Bereiche zu untersuchen. Z. B., wenn Newspaceobjekte immer im zusammenhängenden Bereich 012,000,000 bis 012,777,777 (oktal) zugewiesen sind und Oldspaceobjekte immer im zusammenhängenden Bereich 023,450,000-023,517,730 zugewiesen sind, dann kann ein Auftreten des Speicherns einer Newspacereferenz in ein Oldspaceobjekt einfach durch Vergleichen des Speicherorts der Objekte innerhalb der reservierten Bereiche identifiziert werden. Folglich wird eine Referenz zu einem Objekt am Ort 012,345,670 festgelegt, im Newspace zu sein, da der Ort 012,345,670 in den Bereich 012,000,000 bis 012,777,777 fällt. Viele Laufzeitumgebungen sind jedoch in eine Umgebung implementiert, die es nicht erlaubt, dass große zusammenhängende Speicherbereiche zugewiesen werden. In solchen Umgebungen kann der Speicher nur als eine Vielzahl von gewöhnlichen Segmenten erhalten werden. Als ein Ergebnis kann die Ermittlung, in welchem Speicherbereich sich das Objekt befindet nicht bloß durch Untersuchen des Ortes des Objekts ermittelt werden.
  • Ein Ansatz zur Ermittlung, zu welchem Speicherbereich ein Objekt gehört, bezieht das Durchlaufen einer ergänzenden Datenstruktur mit ein, die auflistet, welche Segmente zu welchem Speicherbereich zugeordnet sind. Dieser Ansatz jedoch übernimmt viele aufwendige Pointer-Dereferenzierungen für die ergänzende Datenstuktur. Ein anderer Ansatz bezieht das Speichern eines Headers am Beginn jedes Objekts ein, der den Raum beschreibt, innerhalb welchem sich das Objekt befindet. Das Abrufen der im Objektheader gespeicherten Information jedoch erfordert das Dereferenzieren eines Speicherpointers auf das Objekt, was aufgrund von Leerstellen in der Instruktionsleitung, Cache-Verlusten oder sogar eines Seitenfehlers, wenn die Seite, auf welcher sich der Objektheader befindet, vom virtuellen Speichersystem ausgelagert worden ist, aufwendig ist.
  • Deshalb besteht ein Bedürfniss nach einer Laufzeitumgebung, um die Speichereigenschaften für ein Objekt zu verwalten, wie beispielsweise Eigenschaften, die anzeigen, innerhalb welches Speicherbereichs ein Objekt zugewiesen ist. Es besteht auch ein Bedürfnis nach einer effizienten Ermittlung einer Speichereigenschaft für ein Objekt, vorzugsweise ohne einen Speicherpointer dereferenzieren zu müssen. Ferner besteht ein Bedürfnis nach einem effizienten Weg, die Zuweisung einer Referenz auf ein Newspaceobjekt innerhalb eines Oldspaceobjekts zu ermitteln.
  • Zusammenfassung der Erfindung
  • Diese und andere Bedürfnisse werden durch das Verschlüsseln von Speichereigenschaften über ein Objekt innerhalb einiger der am wenigsten signifikanten Bits, ein „Tag" genannt, einer Referenz auf das Objekt, wie beispielsweise ein Maschinenpointer, behandelt. Deshalb können die Speichereigenschaften einfach durch herausziehen und untersuchen der spezifizierten Bits des „Tags" effizient ermittelt werden, ohne dass der Maschinenpointer dereferenziert werden muss. Die Speichereigenschaften eines Objekts, das in dem „Tag" einer Referenz auf das Objekt verschlüsselt werden kann, zeigen an, wie und wann das Objekt im Speicher, verwaltet von einer Laufzeitumgebung, gespeichert wird. Z. B. kann das „Tag" Informationen über die Lebenszeit, das Format und/ oder den Zusammenhang eines Objekts verschlüsseln; folglich kann das Tag anzeigen, ob das Objekt im Newspace oder im Oldspace zugewiesen ist.
  • Folglich betrifft ein Aspekt der Erfindung ein computerimplementiertes Verfahren und ein computerlesbares Medium, das Instruktionen für die Verwaltung von Informationen über eine Speichereigenschaft für ein Objekt trägt. Das Objekt wird in einen Speicher, z. B. bei einer N-Bit ausgerichteten Adresse, gespeichert und eine Referenz auf das Objekt wird durch speichern eines Ortes des Objekts innerhalb des Speichers in einen Basisadressteil der Referenz erzeugt. Die Methodologie beinhaltet speichern der Information über die Speichereigenschaft für das Objekt in einen Tagabschnitt der Referenz. Der Tagabschnitt der Referenz beinhaltet ein oder mehrere Bit der Referenz, die weniger signifikant sind als Bits für den Adressteil. In einer Ausführungsform wird Information über die Speichereigenschaft für das Objekt durch abrufen des Tagabschnitts der Referenz auf das Objekt erhalten.
  • Ein weiterer Aspekt der Erfindung betrifft ein computerimplementiertes Verfahren und computerlesbares Medium, das Instruktionen zum Verwalten von Speicher für eine Vielzahl von Objekten trägt. Die Methodologie beinhaltet die Zuweisung des Objekts in einen ersten Speicherbereich und das Umziehen mancher der Objekte von dem ersten Speicherbereich zu einem zweiten Speicherbereich, basierend auf deren Lebenszeiten. Entweder der erste Speicherbereich oder der zweite Speicherbereich oder beide beinhalten eine Vielzahl von nicht zusammenhängenden Segmenten. Eine Datenstruktur von Informationen über welche zweiten Objekte in den zweiten Speicherbereich erste Objekte in den ersten Speicherbereich referenzieren wird erhalten, indem ermittelt wird, ob ein erstes Objekt im ersten Speicherbereich zugewiesen ist und ein zweites Objekt im zweiten Speicherbereich zugewiesen ist, basierend auf einer ersten Referenz auf ein erstes Objekt und einer zweiten Referenz auf ein zweites Objekt, ohne einen Speicherpointer zu dereferenzieren. In einer Ausführungsform wird das Ermitteln, das das erste Objekt im ersten Speicherbereich zugewiesen ist und das zweite Objekt im zweiten Speicherbereich zugewiesen ist dwchgeführt, in dem die „Tags" der Referenzen auf die ersten und zweiten Objekte herausgezogen werden und die „Tags" verglichen werden.
  • Noch weitere Aufgaben und Vorteile der vorliegenden Erfindung werden leicht von der folgenden detaillierten Beschreibung ersichtlich werden, einfach mittels der Illustration der besten Art und Weise, die für die Ausführung der Erfindung in Erwägung gezogen wird. Wie erkannt werden wird ist die Erfindung geeignet für andere und verschiedene Ausführungsformen und ihre vielzähligen Details sind geeignet für Modifikationen in verschiedenen offensichtlichen Gesichtspunkten, alle ohne von der Erfindung abzuweichen. Folglich sollen die Zeichnung und Beschreibung als von illustrativer Natur, und nicht als einschränkend betrachtet werden.
  • Kurze Beschreibung der Zeichnungen
  • Die vorliegende Erfindung wird beispielhalber, und nicht als Beschränkung, in den Figuren der zugehörigen Zeichnungen veranschaulicht, und in welchen sich gleiche Referenznummern auf gleiche Elemente beziehen, und in welchen gilt:
  • 1 ist ein Blockdiagramm, das ein Computersystem abbildet, das verwendet werden kann, um eine Ausführungsform zu implementieren.
  • 2 ist ein Flowchart, das Schritte für die Erzeugung und Verwendung eines tagged Pointers beschreibt.
  • 3 veranschaulicht schematisch eine Implementierung eines tagged Pointers.
  • 4 ist ein Flowchart, das Schritte für die Pflege einer Erinnerungstabelle an einer Write-Banier beschreibt.
  • Beschreibung der bevorzugten Ausführungsform
  • Es werden ein Verfahren sowie eine Vorrichtung für das Verwalten von Speicher beschrieben. In der folgenden Beschreibung werden zum Zwecke der Erklärung zahlreiche spezifische Details dargelegt, um ein gründliches Verständnis der vorliegenden Erfindung bereitzustellen. Es wird jedoch für einen Fachmann ersichtlich sein, dass die vorliegende Erfindung ohne diese spezifischen Details ausgeübt werden kann. In anderen Fällen werden gut bekannte Strukturen und Geräte in Blockdiagrammform gezeigt, um zu vermeiden, dass die vorliegende Erfindung unnötig verworren wird.
  • Hardware Überblick
  • Ein Blockdiagramm, dass ein Computersystem (100) darstellt, auf welchem eine Ausführungsform der Erfindung implementiert werden kann. Das Computersystem (100) beinhaltet einen Bus (102) oder einen anderen Kommunikationsmechanismus zum kommunizieren von Information, sowie einen Prozessor (104), gekoppelt mit dem Bus (102) zum Verarbeiten von Informationen. Das Computersystem (100) beinhaltet auch einen Hauptspeicher (106), wie beispielsweise einen Direktzugriffspeicher (RAM) oder ein anderes dynamisches Speichergerät, gekoppelt an den Bus (102) zum Speichern von Informationen und Instruktionen, die von dem Prozessor (104) auszuführen sind. Der Hauptspeicher (106) kann auch zum Speichern von temporären Variablen und anderen Zwischeninformationen während der Ausführung von Instruktionen, die von dem Prozessor (104) auszuführen sind, verwendet werden. Das Com putersystem (100) beinhaltet ferner einen Festspeicher (ROM) (108) oder ein anderes statisches Speichergerät, gekoppelt an den Bus (102) zum Speichern von statischen Informationen und Instruktionen für den Prozessor (104). Ein Speichergerät (110), wie beispielsweise eine magnetische Disk oder optische Disk, wird bereitgestellt und an den Bus (102) zum Speichern von Informationen und Instruktionen gekoppelt.
  • Das Computersystem (100) kann über den Bus (102) an ein Display (112), wie beispielsweise eine Kathodenstrahlröhre (CRT) zum Anzeigen von Informationen für einen Computerbenutzer, gekoppelt sein. Ein Eingabegerät (114), das alphanumerische und andere Tasten beinhaltet, ist an den Bus (102) zum Kommunizieren von Informationen und Kommandoselektionen an den Prozessor (104), gekoppelt. Ein anderer Typ eines Benutzereingabegeräts ist die Cursorsteuerung (116), wie beispielsweise eine Maus, ein Trackball, oder Cwsorrichtungstasten zum Kommunizieren von Richtungsinformationen und Kommandoselektionen an den Prozessor (104) und zum Steuern der Cwsorbewegung auf dem Display (112). Dieses Eingabegerät hat typischerweise zwei Freiheitsgrade in zwei Achsen, einer ersten Achse (z. B. x) und einer zweiten Achse (z. B. y), was es dem Gerät erlaubt, Positionen in einer Ebene anzugeben.
  • Die Erfindung betrifft die Verwendung des Computersystems (100) für die Speicherverwaltung von Objekten. Gemäß einer Ausführungsform der Erfindung wird das Verwalten von Speicher von dem Computersystem (100) bereitgestellt als Antwort auf den Prozessor (104), der eine oder mehrere Sequenzen von einer oder mehreren Instruktionen, die in dem Hauptspeicher (106) enthalten sind, ausführt. Solche Instruktionen können in den Hauptspeicher (106) von einem anderen computerlesbaren Medium, wie beispielsweise im Speichergerät (110), gelesen werden. Die Ausführung der Sequenzen von Instruktionen, die in dem Hauptspeicher (106) enthalten sind, veranlassen den Prozessor (104), die hierin beschriebenen Prozessschritte durchzuführen. Einer oder mehrere Prozessoren in einer Multi-Prozessor-Anordnung können ebenfalls eingesetzt werden, um die Sequenzen von Instruktionen, die in dem Hauptspeicher (106) enthalten sind, auszuführen. In alternativen Ausführungsformen kann eine festverdrahtete Schaltungstechnik anstelle oder in Kombination mit Softwareinstruktionen verwendet werden, um die Erfindung zu implementieren. Folglich sind die Ausführungsformen der Erfindung nicht auf irgendeine spezifische Kombination einer Hardware-Schaltungstechnik und Software beschränkt.
  • Der Begriff „computerlesbares Medium", wie hierin verwendet bezieht sich auf jedes Medium, das an der Bereitstellung von Instruktionen an den Prozessor (104) zur Ausführung partizipiert. Solch ein Medium kann viele Formen annehmen, beinhaltend, jedoch nicht beschränkt auf nicht volatile Medien, volatile Medien, und Übertragungsmedien. Nicht volatile Medien beinhalten beispielsweise optische oder magnetische Disks, wie beispielsweise das Speichergerät (110). Volatile Medien beinhalten dynamischen Speicher, wie beispielsweise den Hauptspeicher (106). Übertragungsmedien beinhalten koaxiale Kabel, Kupferdraht und Faseroptiken, einschließlich der Kabel, die den Bus (102) umfassen. Die Übertragungsmedien können auch die Form von akustischen oder Lichtwellen annehmen, wie beispielsweise jene, die durch Radiofrequenz (RF) und Infrarot (IR) Datenkommunikationen erzeugt werden. Übliche Formen von computerlesbaren Medien beinhalten beispielsweise eine Floppydisk, eine flexible Disk, eine Harddisk, ein Magnetband, jedes andere magnetische Medium, eine CD-ROM, DVD, jedes andere optische Medium, Punchcards, ein Papierband, jedes andere physikalische Medium mit Lochrastern, einen RAM, einen PROM, und einen EPROM, einen FLASH-EPROM, jeden anderen Speicherchip oder Patrone, eine Trägerwelle wie hierin später beschrieben, oder jedes andere Medium von welchem ein Computer lesen kann.
  • Verschiedene Formen von computerlesbaren Medien können einbezogen werden in das Tragen von einer oder mehreren Sequenzen von einer oder mehreren Instruktionen an dem Prozessor (104) zur Ausführung. Beispielsweise können die Instruktionen zunächst auf einer magnetischen Disk eines Remote Computers getragen werden. Der Remote Computer kann die Instruktionen in dessen dynamischen Speicher laden und die Instruktionen über eine Telefonleitung mittels eines Modems senden. Ein an dem Computersystem (100) befindliches Modem kann die Daten auf der Telefonleitung empfangen und einen Infrarottransmitter verwenden, um die Daten in ein Infrarotsignal umzuwandeln. Ein Infrarotdetektor, gekoppelt an den Bus (102), kann die Daten, die in dem Infrarotsignal getragen werden, empfangen und die Daten an den Bus (102) platzieren. Der Bus (102) trägt die Daten zum Hauptspeicher (106), von welchem der Prozessor (104) die Instruktionen empfängt und ausführt. Die von dem Hauptspeicher (106) empfangenen Instruktionen können optional auf dem Speichergerät (110) entweder vor oder nach der Ausführung durch den Prozessor (104) gespeichert werden.
  • Das Computersystem (100) beinhaltet ferner ein Kommunikationsinterface (118), gekoppelt an der Bus (102). Das Kommunikationsinterface (118) stellt eine Zwei-Wege- Datenkommunikation, die an einen Netzwerkanschluss (120) koppelt, die mit einem lokalen Netzwerk (122) verbunden ist, bereit. Beispielsweise kann das Kommunikationinterface (118) eine Dienst integrierendes Digitalnetz (ISDN) Karte oder ein Modem sein, um eine Datenkommunikationsverbindung an einen konespondierenden Telefonleitungstyp bereitzustellen. Als ein weiteres Beispiel kann das Kommunikationsinterface (118) eine Lokalnetz (LAN) Karte sein, um eine Datenkommunikationsverbindung an ein kompatibles (LAN) bereitzustellen. Drahtlose Verbindungen können ebenfalls implementiert werden. In jeder solchen Implementierung sendet und empfängt das Kommunikationsinterface (118) elekrische, elektromagnetische oder optische Signale, die digitale Datenströme tragen, die verschiedene Typen von Informationen repräsentieren.
  • Der Netzwerkanschluss (120) stellt typischerweise eine Datenkommunikation durch eines oder mehrere Netzwerke an andere Datengeräte bereit. Beispielsweise kann der Netzwerkanschluss (120) eine Verbindung durch das Lokalnetz (122) zu einem Hostcomputer (124) oder zu Datenequipment, das von einem Internetserviceprovider (ISP) (126) betrieben wird, bereitstellen. Der ISP (126) stellt im Gegenzug Datenkommunikationsservices durch das weltweite Paketdatenkommunikationsnetzwerk, jetzt üblicherweise als das „Internet" (128) bezeichnet, bereit. Das Lokalnetz (122) und das Internet (128) verwenden beide elektrische, elektromagnetische oder optische Signale, die die digitalen Datenströme tragen. Die Signale durch die verschiedenen Netzwerke und die Signale auf den Netzwerkanschluss (120) und durch das Kommunikationsinterface (118), welche die digitalen Daten zu und von dem Computersystem (100) tragen, sind exemplarische Formen von Trägerwellen, die die Informationen transportieren.
  • Das Computersystem (100) kann Nachrichten senden und Daten empfangen, einschließlich Programmcode, durch das/die Netzwerk(e), den Netzwerkanschluss (120), und das Kommunikationsinterface (118). Im Beispiel des Internet kann ein Server (130) einen abgefragten Code für ein Applikationsprogramm durch das Internet (128), dem ISP (126), das Lokalnetz (122) und das Kommunikationsinterface (118) übertragen. Gemäß der Erfindung sieht eine solche heruntergeladene Applikation die Verwaltung von Speicher wie hierin beschrieben vor.
  • Der empfangene Code kann von dem Prozessor (104) ausgeführt werden, wie er empfangen wird, und/ oder in dem Speichergerät (110) oder einem anderen nicht volatilen Speicher für die spätere Ausführung gespeichert werden. Auf diese Weise kann das Computersystem (100) den Applikationscode in Form einer Trägerwelle erhalten.
  • Reference Tagging
  • Die vorliegende Erfindung rührt von der Erkenntnis her, dass eine Anordnungsvariante eingefühlt und dann in einer dynamischen Laufzeitumgebung für eine stark typisierten Sprache, wie beispielsweise JAVA verwertet werden kann, um Informationen über die Speichereigenschaften des Objekts innerhalb aller Referenzen auf das Objekt zu codieren. Ein Beispiel für eine Referenz ist ein Maschinenpointer, der eine Ortsangabe des Objekts in Form einer realen oder virtuellen Adresse in den Speicherbereich des Computersystems enthält. Die innerhalb des Pointers eingebettete Information, für welche es wahrscheinlich ist, dass sie sich in einem Schnellzugriffsmaschinenregister befindet, kann deshalb sehr schnell abgefragt werden, ohne dass zusätzliche Speicherzyklen benötigt werden, um den Header des referenzierten Objekts zu holen.
  • Bezugnehmend auf 2 werden die Objekte, die von der Laufzeitumgebung verwaltet werden, bei einer N-Bit Anordnungsadresse (200) gespeichert. Mit anderen Worten beginnt die Speicherung für diese Objekte bei virtuellen Adressen, die auf 2N-Byte Begrenzungen beginnen. Beispielsweise können die Objekte bei 3-Bit angeordneten Adressen gespeichert werden, das bedeutet, auf 23 = 8 Byte Begrenzungen. Folglich kann eine gültige Startadresse, formuliert als Oktalzahl, für ein solches Objekt 02,447,630 sein, jedoch eine Adresse wie beispielsweise 02,447,634 ist keine gültige Startadresse für die Speicherung eines Objekts. Somit dienen die drei letzten signifikanten Bits des Pointers nicht dazu, verschiedene Objekte zu unterscheiden, da nur einer der acht Werte für die drei letzten signfikanten Bits eine gültige Adresse ist und die übrigen sieben Werte nicht auf ein beliebiges anderes Objekt zeigen. In Anbetracht dieser Anordnungseinschränkung beziehen sich Maschinenpointer mit Adressen von 02,447,630 bis 02,447,637 tatsächlich auf das selbe Objekt.
  • Deshalb kann jedes der N am wenigsten signifikanten Bits eines Pointers auf ein N-Bit angeordnetes Objekt verwendet werden, um andere Informationen, nämlich Speichereigenschaften des referenzierten Objekts zu kodieren. Der verbleibende Abschnitt des Pointers, die „Basisadresse" genannt, beinhaltet die Ortsangabe des Objekts innerhalb des virtuellen Speichers.
  • Somit sind alle Bits in einem Pointer, die weniger signifikant sind als die Bits für die Basisadresse, verfügbar für das Anzeigen eines Objekts. Beispielsweise können alle drei Bits eines Pointers auf ein 3-Bit angeordnetes Objekt dazu verwendet werden, eine Speichereigenschaft des Objekts anzugeben.
  • Als weiteres Beispiel können die Bits 2 und 3 dazu reserviert werden, eine Speichereigenschaft des Objekts anzugeben, Bit 0 jedoch kann für irgendeine andere Art einer Instanzeneigenschaft verwendet werden.
  • In einer in 3 verdeutlichten Implementierung besteht der Pointer (300) aus einer 32-Bit virtuellen Adresse. Wenn Objekte innerhalb der Laufzeitumgebung auf 8 Byte Begrenzungen angeordnet sind, dann sind 3 am wenigsten signifikante Bits des Pointers (300) für das „Tag" (304) verfügbar und die verbleibenden 29 Bits, die den Basisadressteil (302) ausbilden, werden verwendet, um die Ortsangabe des referenzierten Objekts zu halten. Obwohl 3 ein Beispiel eines 32-Bit Pointers (300) mit einem 3-Bit „Tag" (304) abbildet, ist die vorliegende Erfindung nicht auf diese speziellen Größen beschränkt und die Pointergröße und Taggöße kann sich von Implementierung zu Implementierung ändern. Beispielsweise ist das Pointer Tagging für 16 Bit, 36 Bit und 64 Bit Pointer, und 1 Bit bis 5 Bit Tags geeignet.
  • Bezugnehmend zurück auf 2 wird, wenn eine Referenz, wie beispielsweise ein Pointer auf ein Objekt, erzeugt wird, die Ortsangabe des Objekts in dem Basisadressteil der Referenz (Schritt 202) gespeichert, und die gewünschte Speichereigenschaft des referenzierten Objekts wird im Tagabschnitt (Schritt 204) gespeichert. Um die Speichereigenschaft für ein Objekt, basierend auf einem Pointer (300), der das Objekt referenziert, abzufragen, wird der Tagabschnitt (304) des Pointers (300) abgerufen (Schritt 206) ohne den Pointer zu dereferenzieren. Das Tag kann in einer Vielzahl von Wegen herausgezogen werden, beispielsweise durch Maskieren des Pointers, um die am wenigsten signifikanten Bits (304) herauszuziehen, oder durch Berechnen einer Pointerreferenz des Pointers (300) und der tatsächlichen Startadresse des Objekts.
  • Um einen Tagpointer zu dereferenzieren wird die Basisadresse aus dem Pointer herausgezogen und dann dereferenziert. Beispielsweise wird ein Tagpointer 02,447,634 in die Basisadresse 02,447,630 für die Dereferenzierung umgewandelt. Die Basisadresse kann bei spielsweise durch wegmaskieren des Tag extrahiert werden. In den C-Programmiersprachen kann das Tag mit folgendem Ausdruck wegmaskiert werden: (ptr & ~07).
  • Im gegensatz zu manchen SmalltalkTM und LISP MachineTM Implementierungen, die Typeninformationen in einem Pointertag codieren, setzt eine Ausführungsform der Erfindung das Referenzieren des Taggings in einer dynamischen Laufzeitumgebung für eine stark typisierte Sprache wie beispielsweise JAVETM ein, um nicht Typeninformationen über die Speichereigenschaften eines Objekts zu kodieren. In einer Laufzeitumgebung für eine stark typisierte Sprache ist das Speichern von Typeninformationen in einem Pointer unnötig, da der Compiler bereits Kenntnis von der relevanten Typeninformation hat, im allgemeinen in solchen Zusammenhängen, z. B. Nachrichtenabfertigung in welchen es kritisch ist, den Typ eines Objekts zu kennen.
  • Eine Speichereigenschaft ist eine stabile Instanzeneigenschaft, anders als der „Typ" die im allgemeinen betrifft, wie das Objekt im Speicher gespeichert wird und wie lange das Objekt in den Speicher, der von einer Laufzeitumgebung verwaltet wird, gespeichert wird. Es hat sich als insbesondere nützlich erwiesen, innerhalb eines Pointerag drei Arten von Speichereigenschaften zu kodieren: Lebenszeit, Format und Zusammenhang. Zusätzlich können Kombinationen dieser Speichereigenschaften in den Pointertag kodiert werden.
  • Die Lebenszeit-Speichereigenschaft eines Objekts zeigt an, wie lange das Objekt existiert hat. Die Lebenszeit kann absolut in Größen der Zeit oder in relativen Größen zu einem anderen Objekt oder zu einem Ereignis ausgedrückt werden. Beispielsweise können „kürzlich" zugewiesene Objekte mit einer 0 getagt (getagged?) werden und „ältere" Objekte können mit einer 1 getagt werden. Präziser ist in einem Generationsspeicherbereiniger das Tag 0 mit Objekten im Newspace assoziiert und das Tag 1 ist mit Objekten im Oldspace assozert. In diesem Fall kann ein älteres Objekt definiert werden als vier Ereignisse überlebend, in welchen der Newspace für die Speicherbereinigung gereinigt wurde. Als ein anderes Beispiel kann die Lebenszeit angeben, ob das Objekt während des derzeitigen SQL-Aufrufs zugewiesen wurde, in einem früheren Aufruf in der Session, oder zwischen Sessions persistent geblieben ist.
  • Das Format eines Objekts zeigt an, was die interne Darstellung des Objekts ist. Das Format weicht vom Typ ab da der Typ ein logisches Konzept ist, während das Format ein physikali sches Konzept ist. Folglich ist es für zwei Objekte des selben Typs möglich, verschiedene Formate oder interne Darstellungen zu besitzen. Ein Beispiel für ein Format für ein Objekt bezieht die interne Darstellung einer Referenz auf in anderes Objekt ein. Diese Referenz kann in ein Format als ein nativer Maschinenpointer und als eine numerische Referenz in einem anderen Format implementiert sein. Eine numerische Referenz ist eine Ganzzahl, die die Ortsangabe eines Objekts als eine Versetzung oder einen Abstand von einem impliziten Basispointer, wie beispielsweise der Raum eines Zuweisungsbereichs des Speichers oder sogar der Start des Objektes selbst, beschreibt. Da die interne Darstellung einer numerischen Referenz eine Ganzzahl ist, ist eine numerische Referenz portabler und potentiell relokatierbarer als native Maschinenpointer. In der Tat können numerische Referenzen selbst getagged werden, um Speichereigenschaften, wie beispielsweise der Zusammenhang, von den Objekten aufgezeichnet werden, auf die sich die numerischen Referenzen beziehen.
  • Eine andere Speichereigneschaft ist die Kontiguität des Objekts, die anzeigt, ob das Objekt bei zusammenhängenden Speicherorten oder auf nicht zusammenhängenden Seiten gespeichert ist. Diese Speichereigenschaft hat sich als insbesondere vorteilhaft in Laufzeitwngebungen erwiesen, in welchen der Speicher nur als eine Plwalität von üblicherweise nicht zusammenhängenden Seiten erhalten werden kann. Eine Seite ist eine zusammenhängende Region fester Länge des (virtuellen) Adressraums eines Computersystems. In einer Ausführungsform ist die Seitengröße 4096 (212); obwohl die Seitengröße in anderen Ausführungsformen, wie beispielsweise von 28 (256) bis 216 (65536) Bytes reichen kann. Ein Objekt wird als nicht zusammenhängend oder „paged" bezeichnet, wenn es auf einer Vielzahl von Seiten gespeichert wird, speziell wenn eine der Seiten nicht mit einer beliebigen anderen der Seiten zusammenhängend ist. Die Adressberechnung eines Feldes, einer Instanzenvariable oder eines „Slot" eines paged Objekts ist ziemlich kompliziert, durch indizieren durch eine Seitentabelle, jedoch viel einfacher für zusammenhängende Objekte. Deshalb ermöglicht es die Kodierung der Kontiguität eines Objekts in einem Referenztag, dass die geeigneten Maschineninstrutktionen für das Abrufen der Slots des paged Objekts abgefertigt werden.
  • Das Tag kann auch Kombinationen von Speichereigenschaften, wie beispielsweise die Lebenszeit und das Format des Objekts (für ein Format) oder die Kontiguität und das Format des Objekts (für ein anderes Format) kodieren. Tabelle 1 listet eine mögliche Zuordnung von Tagwerten für solche Eigenschaften auf: Tabelle 1
    Figure 00140001
  • Da die Speichereigenschaft des Objekts in allen Referenzen auf das Objekt kodiert ist, folgt, dass Änderungen, die in der Speichereigenschaft des Objekts gemacht wurden, in allen Referenzen auf das Objekt widergespiegelt sein müssen. Diese Restriktion jedoch ist für das Tagging der Speichereigenschaften nicht problematisch. Beispielsweise sind manche Eigenschaften im wesentlichen permanent, wie beispielsweise das Format oder die Kontiguität, und die Änderung von solchen Pointertags wird kaum, wenn überhaupt jemals auftreten. Als ein weiteres Beispiel müssen, wenn ein Newspace Objekt in den Oldspace von einem Generations Scavenger tenured wird, alle Referenzen auf dieses Objekt notwendiger weise von dem Scavenger in jedem Fall verschoben werden, und, als Teil dieser Verschiebung kann das Tag aktualisiert werden, obwohl die Lebenszeit keine permanente Eigenschaft des Objekts ist.
  • Verwenden des Pontertags, um eine Schreibgrenze zu implementieren
  • 4 Bildet ein Flowchart ab, das verdeutlicht, wie Pointertags verwendet werden können, um eine Schreibgrenze in einem Generationsspeicherbereiniger effizient zu implementieren. Innerhalb des Generationsspeicherbereinigers werden Objekte im Newspace (Schritt 400) zugewiesen und manche der Objekte werden in den Oldspace migriert, basierend auf deren Lebenszeit (Schritt 402). Eine Datenstruktur, eine Erinnerungstabelle genannt, wird an einer Schreibgrenze gepflegt. D. h., als Antwort auf eine Zuweisung eines Zielpointers auf ein Ziel- Objekt in ein Feld im Quellobjekt, referenziert durch den Quellpointer, wird eine Erinnerungstabelle bedingt aktualisiert (Schritt 404). Spezieller muss die Erinnerungstabelle aktualisiert werden, wenn festgestellt wird, dass das Zielobjekt im Newspace ist und das Quellobjekt im Oldspace ist.
  • Die Schritte 410 bis 416 beschreiben, wie diese Bestimmung mittels der Pointertags gemäß einer Ausführungsform durchgeführt wird. Bei Schritt 410 wird das Zieltag aus dem Zielpointer durch Maskieren oder Berechnen einer Pointerdifferenz herausgezogen, und bei Schritt 412 wird das Quelltag aus dem Quellpointer herausgezogen. Diese Operationen sind typischerweise Register-zu-Register Operationen für die meisten Computerarchitekturen und beziehen das Dereferenzieren eines Speicherpointers nicht mit ein. Somit wird der Overhead, der üblicherweise mit dem Dereferenzieren eines Speicherpointers, wie beispielsweise das Ausgeben eines Speicherlesezyklus an einen Systembus oder das Duchführen eines Speicherabrufs, verbunden ist, vermieden. Deshalb dienen Pointertags dazu, den Aufwand konventioneller Ansätze zu vermeiden, welche einen Cache Miss oder einen Pagefehler des virtuellen Speichers übernehmen können. Insbesondere resultiert die Verwendung nur von Registeroperationen in einer signifikanten Leistungsverbesserung über den konventionellen Objektheaderansatz.
  • Bei Schritt 414 werden das Quelltag und das Zieltag überprüft, um zu ermitteln, ob das Zuweisungsstatement in einem Oldspace Quellobjekt resultiert, das ein Newspace Zielobjekt referenziert. Wenn diese Prüfung war ist, wird die Erinnerungstabelle aktualisiert (Schritt 416). In einer Ausführungsform kann diese Überprüfungsoperation einfach durch vergleichen des Quelltag mit dem Oldspacewert und das Vergleichen des Zieltag mit dem Newspacewert dwchgeführt werden. Beispielsweise kann, in der C-Programmiersprache der folgende Ausdruck diese Überprüfung durchführen: ((source & 07) = OLDSPACE && (target & 07) = NEWSPACE), wobei source der Pointer auf das Quellobjekt ist, target der Pointer auf das Zielobjekt ist, OLDSPACE und NEWSPACE offenkundige Konstanten sind, definiert, um Werte, z. B. 1 und 0 entsprechend festzusetzen.
  • Während der oben beschriebene Ausdruck geeignet ist, die Überprüfung durchzuführen, kann er mit geeigneten Auswahlen von Tagwerten effizienter gemacht werden. Z. B. kann, mit einem Oldspacetag von 1 und einem Newspacewert von 0, diese Ermittlung einfach durch einen Vergleich auf Ungleichheit durchgeführt werden: (source & 07) > (target & 07). Mit zusätzlichen Tagwerten kann dieser Vergleich immernoch in einem Generationsspeicherbereiniger verwendet werden, wenn beispielsweise alle Schreiboperationen, die Zuweisungen in Pointerformatobjekte einbeziehen, von solchen getrennt werden, die Schreiboperationen in numerische Referenzformatobjekte einbeziehen. Diese Situation kann auftreten, wenn der Generationsspeicherbereiniger nur für Pointer-formatierte Objekte im Cal-Duration Speicher verwendet wird, und die numerischen Referenz formatierten Objekte in einem Session-Duration Speicher zugewiesen werden.

Claims (20)

  1. Verfahren der Handhabung bzw. Verwaltung von Informationen über eine Speichereigenschaft für ein Objekt, umfassend die Schritte: Speichern des Objektes in einem virtuellen Speicher; und Erzeugen einer Referenz (300) zu dem Objekt; dadurch gekennzeichnet, dass: die Referenz (300) einen Basisadressen-Teil (302) und einen Kennzeichen-Teil (304) beinhaltet; der Basisadressen-Teil (302) der Referenz (300) eine Ortsangabe des Objektes innerhalb des virtuellen Speichers enthält; der Kennzeichen-Teil (304) der Referenz (300) die Informationen über die Speichereigenschaft für das Objekt enthält; und der Kennzeichen-Teil (304) der Referenz (300) einen oder mehrere Bits der Referenz (300) beinhaltet, die weniger signifikant als Bits für den Basisadressen-Teil (302) sind.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass der Schritt der Speicherung des Objektes in einem virtuellen Speicher den Schritt der Speicherung des Objekts in einem Speicher an einer N-Bit ausgerichteten Adresse (200) beinhaltet.
  3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, dass der Kennzeichen-Teil (304) die N am wenigsten signifikanten Bits der Referenz beinhaltet.
  4. Verfahren nach Anspruch 2, dadurch gekennzeichnet, dass es ferner den Schritt des Wiederauffindens der Informationen über die Speichereigenschaft für das Objekt durch Zugreifen auf den Kennzeichen-Teil (304) der Referenz des Objektes (206) umfasst. in dem Kennzeichen-Teil (304) von Information über die Lebensdauer des Objektes den Schritt der Speicherung in dem Kennzeichen-Teil (304) von Information beinhaltet, die anzeigt, ob das Objekt für zumindest eine vorgeschriebene Anzahl von Speicherbereinigungs-Ereignissen existiert hat.
  5. Verfahren nach Ansprach 2, dadurch gekennzeichnet, der Schritt des Speicherns in einem Kennzeichen-Teil (304) der Referenz (300) der Information über die Speichereigenschaft für das Objekt den Schritt des Speicherns in einem Kennzeichen-Teil (304) von Information über ein Speicherformat des Objektes beinhaltet.
  6. Verfahren nach Ansprach 7, dadurch gekennzeichnet, dass das Objekt eine Referenz enthält; und dass der Schritt des Speicherns in dem Kennzeichen-Teil (304) von Information über das Speicherformat des Objektes den Schritt des Speicherns in dem Kennzeichen-Teil (304) von Information über ein Format der Referenz, enthalten innerhalb des Objekts, beinhaltet.
  7. Verfahren nach Anspruch 3, dadurch gekennzeichnet, dass der Schritt des Speicherns in dem Kennzeichen-Teil (304) von Information über das Format der Referenz, enthalten innerhalb des Objektes, den Schritt des Speicherns in dem Kennzeichen-Teil (304) von Information beinhaltet, die anzeigt, ob die darin enthaltene Referenz als Maschinenzeiger oder als numerische Referenz gespeichert ist.
  8. Verfahren nach Anspruch 2, dadurch gekennzeichnet, dass der Schritt der Speicherung in einem Kennzeichen-Teil (304) der Referenz der Information über die Speichereigenschaft für das Objekt den Schritt des Speicherns in den Kennzeichen-Teil (304) von Information über den Zusammenhang des Objektes beinhaltet.
  9. Verfahren nach Anspruch 10, wobei der Schritt des Speicherns in dem Kennzeichen-Teil (304) von Information über den Zusammenhang des Objektes den Schritt des Speicherns in dem Kennzeichen-Teil von Information beinhaltet, die anzeigt, ob das Objekt in einer Vielzahl von Seiten gespeichert ist.
  10. Verfahren nach Anspruch 11, dadurch gekennzeichnet, dass der Schritt des Speicherns in dem Kennzeichen-Teil (304) von Information, die anzeigt, ob das Objekt in einer Vielzahl von Seiten gespeichert ist, den Schritt des Speicherns in dem Kennzeichen-Teil (304) von Information beinhaltet, die anzeigt, ob das Objekt in zumindest einer Seite gespeichert ist, die nicht angrenzend an irgendeine der anderen Seiten ist.
  11. Verfahren nach Anspruch 2, dadurch gekennzeichnet, dass der Schritt des Speicherns, in einem Kennzeichen-Teil (304) der Referenz, der Information über die Speichereigenschaft für das Objekt den Schritt des Speicherns in dem Kennzeichen-Teil (304), von sowohl a) Informationen, die die Lebensdauer eines Objektes anzeigt und, dass die Referenz, enthalten in dem Objekt, im ersten Format gespeichert ist, als auch b) Informationen, die eine Zusammenhang des Objektes anzeigt, dass die Referenz, enthalten in dem Objekt, in einem zweiten Format, unterschiedlich von dem ersten Format, gespeichert ist, enthält.
  12. Verfahren nach Anspruch 2, dadurch gekennzeichnet, dass N exakt 3 ist.
  13. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass der Schritt des Erzeugens einer Referenz den Schritt der Initialisierung eines Maschinenzeigers (300) beinhaltet.
  14. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass der Schritt des Erzeugens einer Referenz den Schritt der Initialisierung einer numerischen Referenz beinhaltet.
  15. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass eine Vielzahl von Objekten verwaltet wird.
  16. Verfahren nach Anspruch 17, dadurch gekennzeichnet, dass die Objekte in einem ersten Speicherbereich platziert sind; dass manche Objekte vom ersten Speicherbereich zu einem zweiten Speicherbereich überführt werden, basierend auf den jeweiligen Lebensdauern dieser Objekte; und dass eine Datenstruktur darüber erhalten wird, welche zweiten Objekte in dem zweiten Speicherbereich, erste Objekte in dem ersten Speicherbereich referenzieren, durch: Feststellen, ob ein erstes Object in dem ersten Speicherbereich platziert ist und ein zweites Objekt in dem zweiten Speicherbereich platziert ist, basierend auf einer ersten Information, enthalten innerhalb einer ersten Referenz zu einem ersten Objekt, und einer zweiten Information, enthalten innerhalb einer zweiten Referenz zu einem zweiten Objekt, ohne einen Speicherzeiger (300) zu dereferenzieren; worin beide, der erste Speicherbereich und der zweite Speicherbereich, eine jeweilige Vielzahl von nicht angrenzenden Seiten enthalten.
  17. Verfahren nach Anspruch 18, dadurch gekennzeichnet, dass der Schritt des Feststellens, ob ein erstes Objekt in dem ersten Speicherbereich platziert ist und ein zweites Objekt in dem zweiten Speicherbereich plaziert ist, basierend auf einer ersten Referenz zu einem ersten Objekt und einer zweiten Referenz zu einem zweiten Objekt, ohne Dereferenzierung eines Speicherzeigers (300), den Schritt beinhaltet: Extrahieren von einem oder mehreren ersten Bits der ersten Referenz, wobei das/die erste(n) Bit(s) weniger signifikant sind als Bits für die Speicherung einer Adresse des ersten Objekts; extrahieren von einem oder mehreren zweiten Bits der zweiten Referenz, wobei das/die zweiten Bit(s) weniger signifikant sind als Bits für die Speicherung einer Adresse des ersten Objekts; und Feststellen, ob das erste Objekt in dem ersten Speicherbereich platziert ist und das zweite Objekt in dem zweiten Speicherbereich platziert ist, basierend auf dem/den ersten Bit(s) und dem/den zweiten Bit(s).
  18. Verfahren nach Anspruch 19, dadurch gekennzeichnet, dass der Schritt des Feststellens, ob das erste Objekt in dem ersten Speicherbereich platziert ist und das zweite Objekt in dem zweiten Speicherbereich, platziert ist, basierend auf dem/den ersten Bit(s) und dem/den zweiten Bit(s), den Schritt des Vergleichs des/der ersten Bit(s) und des/der zweiten Bit(s) für eine vorgeschriebene Ungleichheit beinhaltet.
  19. Verfahren nach Anspruch 20, dadurch gekennzeichnet, dass der Schritt des Extrahierens des/der ersten Bit(s) der ersten Referenz den Schritt des Extrahierens des/der am wenigsten signifikanten Bit(s) der ersten Referenz beinhaltet; und der Schritt des Extrahierens des/der zweiten Bit(s) der ersten Referenz den Schritt des Extrahierens des/der am wenigsten signifikanten Bit(s) der zweiten Referenz beinhaltet.
  20. Computerprogramm, umfassend Computerprogrammcodeeinrichtungen, geeignet, alle Schritte entsprechend einem der Ansprüche 1 bis 21 durchzuführen, wenn das Programm auf einem Computer ausgeführt wird, wobei das Computerprogramm auf einem computerlesbaren Medium ausgebildet ist.
DE60002559T 1999-02-11 2000-02-11 Speicherverwaltung in einer laufzeitumgebung Expired - Lifetime DE60002559T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US248295 1999-02-11
US09/248,295 US6457019B1 (en) 1999-02-11 1999-02-11 Memory management within a run-time environment
PCT/US2000/003411 WO2000048074A1 (en) 1999-02-11 2000-02-11 Memory management within a run-time environment

Publications (2)

Publication Number Publication Date
DE60002559D1 DE60002559D1 (de) 2003-06-12
DE60002559T2 true DE60002559T2 (de) 2004-04-08

Family

ID=22938499

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60002559T Expired - Lifetime DE60002559T2 (de) 1999-02-11 2000-02-11 Speicherverwaltung in einer laufzeitumgebung

Country Status (8)

Country Link
US (2) US6457019B1 (de)
EP (1) EP1153343B1 (de)
JP (1) JP3908909B2 (de)
AT (1) ATE239938T1 (de)
AU (1) AU761969B2 (de)
CA (1) CA2362463C (de)
DE (1) DE60002559T2 (de)
WO (1) WO2000048074A1 (de)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6795836B2 (en) * 2000-12-29 2004-09-21 International Business Machines Corporation Accurately determining an object's lifetime
US7158995B2 (en) * 2002-05-08 2007-01-02 Oracle International Corporation Method for managing pointers to external objects in a run-time environment
US7039664B2 (en) * 2002-12-04 2006-05-02 Sun Microsystems, Inc. Combining entries in a card object table
US7136887B2 (en) * 2002-12-04 2006-11-14 Sun Microsystems, Inc. Method and mechanism for finding references in a card in time linear in the size of the card in a garbage-collected heap
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
US7058670B2 (en) * 2002-12-20 2006-06-06 Sun Microsystems, Inc. Scalable, space-efficient, parallel remembered-sets
US7225439B2 (en) 2003-03-21 2007-05-29 Sun Microsystems, Inc. Combining write-barriers within an inner loop with fixed step
US7328436B2 (en) * 2003-09-15 2008-02-05 Motorola, Inc. Dynamic allocation of internal memory at runtime
US7412580B1 (en) 2003-10-06 2008-08-12 Sun Microsystems, Inc. Concurrent incremental garbage collector with a card table summarizing modified reference locations
US7124291B1 (en) * 2003-12-22 2006-10-17 Sun Microsystems, Inc System and method for eliminating static initialization overhead by memory space cloning of a master runtime system process
US8825702B2 (en) * 2004-02-24 2014-09-02 Oracle International Corporation Sending control information with database statement
US7272695B1 (en) 2004-09-13 2007-09-18 Sun Microsystems, Inc. Hot-card caching to avoid excessive remembered-set updating
US7401202B1 (en) * 2004-09-14 2008-07-15 Azul Systems, Inc. Memory addressing
US8037482B1 (en) * 2004-09-14 2011-10-11 Azul Systems, Inc. Accelerated class check
US7313566B1 (en) 2004-12-23 2007-12-25 Sun Microsystems, Inc. Method and apparatus for isolating selected heap objects using a faulting address trap
US7882505B2 (en) * 2005-03-25 2011-02-01 Oracle America, Inc. Method and apparatus for switching between per-thread and per-processor resource pools in multi-threaded programs
US7565499B1 (en) 2005-03-28 2009-07-21 Sun Microsystems, Inc. Method and apparatus for recording modified reference locations in garbage-collected heap memory
US7650350B1 (en) 2005-05-18 2010-01-19 Sun Microsystems, Inc. Method and apparatus for concurrently processing remembered sets in a space-incremental garbage collector
US8860752B2 (en) * 2006-07-13 2014-10-14 Apple Inc. Multimedia scripting
US7610468B2 (en) * 2006-10-26 2009-10-27 Hewlett-Packard Development Company, L.P. Modified buddy system memory allocation
US8140961B2 (en) * 2007-11-21 2012-03-20 Hewlett-Packard Development Company, L.P. Automated re-ordering of columns for alignment trap reduction
US8732430B2 (en) * 2011-03-22 2014-05-20 Oracle International Corporation Method and apparatus for using unused bits in a memory pointer
WO2014044403A2 (en) * 2012-09-24 2014-03-27 Giesecke & Devrient Gmbh A security module and a method for optimum memory utilization
US9852046B1 (en) * 2015-05-07 2017-12-26 Cadence Design Systems, Inc. Method and system for automated debugging memory allocation and memory release

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5075842A (en) 1989-12-22 1991-12-24 Intel Corporation Disabling tag bit recognition and allowing privileged operations to occur in an object-oriented memory protection mechanism
US5426747A (en) 1991-03-22 1995-06-20 Object Design, Inc. Method and apparatus for virtual memory mapping and transaction management in an object-oriented database system
US5742848A (en) 1993-11-16 1998-04-21 Microsoft Corp. System for passing messages between source object and target object utilizing generic code in source object to invoke any member function of target object by executing the same instructions
US5581765A (en) 1994-08-30 1996-12-03 International Business Machines Corporation System for combining a global object identifier with a local object address in a single object pointer
US5845331A (en) 1994-09-28 1998-12-01 Massachusetts Institute Of Technology Memory system including guarded pointers
US6571262B2 (en) * 2000-02-14 2003-05-27 Apple Computer, Inc. Transparent local and distributed memory management system
US5794256A (en) 1996-12-12 1998-08-11 Microsoft Corporation Pointer swizzling facility using three-state references to manage access to referenced objects
US6349297B1 (en) * 1997-01-10 2002-02-19 Venson M. Shaw Information processing system for directing information request from a particular user/application, and searching/forwarding/retrieving information from unknown and large number of information resources
US5920876A (en) 1997-04-23 1999-07-06 Sun Microsystems, Inc. Performing exact garbage collection using bitmaps that identify pointer values within objects
US5903899A (en) * 1997-04-23 1999-05-11 Sun Microsystems, Inc. System and method for assisting exact Garbage collection by segregating the contents of a stack into sub stacks
US5903900A (en) * 1997-04-23 1999-05-11 Sun Microsystems, Inc. Method and apparatus for optimizing exact garbage collection of array nodes in a carded heap
CA2212316C (en) 1997-07-31 2001-02-13 Ibm Canada Limited - Ibm Canada Limitee A method of recognizing fixed and variable sized data objects in memory
US6128621A (en) 1997-10-31 2000-10-03 Oracle Corporation Apparatus and method for pickling data
US6345276B1 (en) 1998-09-18 2002-02-05 Microsoft Corporation Representing base pointers in a shared memory heap
US6449626B1 (en) * 1999-08-19 2002-09-10 Sun Microsystems, Inc. Reduced-cost remembered-set processing in a train-algorithm-based garbage collector

Also Published As

Publication number Publication date
DE60002559D1 (de) 2003-06-12
ATE239938T1 (de) 2003-05-15
JP2002536761A (ja) 2002-10-29
JP3908909B2 (ja) 2007-04-25
AU761969B2 (en) 2003-06-12
AU3226700A (en) 2000-08-29
US6678697B2 (en) 2004-01-13
US20020194191A1 (en) 2002-12-19
EP1153343B1 (de) 2003-05-07
CA2362463C (en) 2003-10-28
US6457019B1 (en) 2002-09-24
EP1153343A1 (de) 2001-11-14
CA2362463A1 (en) 2000-08-17
WO2000048074A1 (en) 2000-08-17

Similar Documents

Publication Publication Date Title
DE60002559T2 (de) Speicherverwaltung in einer laufzeitumgebung
US7310718B1 (en) Method for enabling comprehensive profiling of garbage-collected memory systems
DE69932874T2 (de) Verfahren und Computersystem zur dynamischen Generationsverwaltung von Rechnerspeicher
DE69738101T2 (de) Verwaltung des Zugangs zu Objekten mit Hilfe von Referenzen mit drei Zuständen
US7111294B2 (en) Thread-specific heaps
US6279012B1 (en) Reducing the memory footprint of a session duration semispace
DE102012208141B4 (de) Ausgleich nachlassender Funktionsfähigkeit
US7631024B2 (en) Method and apparatus for facilitating mark-sweep garbage collection with reference counting
US6622226B1 (en) Method and system for using a mark-list for garbage collection
US9141539B2 (en) System and method for object deletion in persistent memory using bitmap windows
EP2281233B1 (de) Effizientes markieren von objekten mit grossen referenzsätzen
US7249235B2 (en) Architecture for a scalable and user-extensible heap dump analysis tool
DE102013206744A1 (de) Deduplizierende speicherung mit verbesserter erkennung von häufigen blöcken
DE60034702T2 (de) Verfahren und vorrichtung zur verbesserung der wirksamkeit von kopierender speicherbereinigung
DE112011100618T5 (de) Verwalten von Schreiboperationen auf einen Speicherbereich von Spuren, der zwischen Speichereinheiten verlagert wird
US7627621B2 (en) Method and system for minor garbage collection
DE3390323T1 (de) Ermittlung eines sequentiellen Datenstroms
US20110087713A1 (en) Associative references in a garbage collected programming environment
US20110252199A1 (en) Data Placement Optimization Using Data Context Collected During Garbage Collection
JP2003519834A (ja) メモリ管理によって参照の局所性を改善するための方法および装置
US6999979B2 (en) Efficient encoding of references into a collection set
DE102013200030B4 (de) Hash-basiertes verwalten von speicher-ids
DE112011103536T5 (de) Verfahren zum Erkennen von Zugriffen auf ein Objekt und Computer und Computerprogrammprodukt für selbiges
DE10296957T5 (de) Ein Verfahren zum Verwenden nicht-temporaler Streaming-Speicheroperationen zum Verbessern eines Algorithmus zur Sammlung wertloser Daten
US7870171B2 (en) Method and system for garbage collection in a multitasking environment

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: DENDORFER & HERRMANN PATENTANWAELTE PARTNERSCHAFT,