JP2002536761A - 実行時環境でのメモリ管理 - Google Patents

実行時環境でのメモリ管理

Info

Publication number
JP2002536761A
JP2002536761A JP2000598926A JP2000598926A JP2002536761A JP 2002536761 A JP2002536761 A JP 2002536761A JP 2000598926 A JP2000598926 A JP 2000598926A JP 2000598926 A JP2000598926 A JP 2000598926A JP 2002536761 A JP2002536761 A JP 2002536761A
Authority
JP
Japan
Prior art keywords
bits
tag
memory area
storing information
storing
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.)
Granted
Application number
JP2000598926A
Other languages
English (en)
Other versions
JP3908909B2 (ja
Inventor
セックストン,ハルラン
ユニーティス,デイビッド
ベンソン,ピーター
Original Assignee
オラクル コーポレーション
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 オラクル コーポレーション filed Critical オラクル コーポレーション
Publication of JP2002536761A publication Critical patent/JP2002536761A/ja
Application granted granted Critical
Publication of JP3908909B2 publication Critical patent/JP3908909B2/ja
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)

Abstract

(57)【要約】 実行時環境内で管理されるオブジェクトはNビット整列アドレスに記憶される。整列上の制限のため、オブジェクトの記憶特性に関する情報の記憶に利用できるのは、オブジェクトへのリファレンスのN個の下位ビットである。この情報は高速レジスタ動作によって抽出できる。記憶特性は、オブジェクトの生存期間、フォーマットおよび連続性またはこれらの特性の組合せを含むことができる。実行時環境が世代別ごみ収集器を実現する場合は、リファレンスタグを用いてオブジェクトが最近割当てられたものかどうかを符号化する。

Description

【発明の詳細な説明】
【0001】
【関連出願】
本出願は以下の出願に関連している。
【0002】 Harlan Sextonらによって同日に出願された、「実行時環境内におけるマシン
と独立したメモリ管理システム」と題される、米国特許出願第09/248,2
91号(書類番号50277−172;OID−1997−48−02)。ここ
に引用により援用される。
【0003】 Harlan Sextonらによって同日に出願された、「実行時環境内における不変リ
ファレンスのアドレス計算」と題される、米国特許出願第09/248,294
号(書類番号50277−179;OID−1997−48−03)。ここに引
用により援用される。
【0004】 Harlan Sextonらによって同日に出願された、「実行時環境内におけるページ
ングメモリ管理システム」と題される、米国特許出願第09/248,297号
(書類番号50277−261;OID−1997−48−17)。ここに引用
により援用される。
【0005】
【発明の分野】
本発明はコンピュータシステムに関し、より特定的には実行時環境に対するメ
モリの管理に関する。
【0006】
【発明の背景】
ジャバ(登録商標)(JAVA(R)TM)のような言語に対する動的実行時環境にお
いて、オブジェクトのメモリ管理は非常に重要である。具体的には、動的実行時
環境ではオブジェクトに対するメモリの割当および割当解除を処理しなければな
らない。オブジェクトとはデータをカプセル化するエンティティであり、JAVA(R
)のような環境ではオブジェクトに関連する動作を含む。
【0007】 オブジェクトを作成する場合、ある量のメモリをオブジェクトに割当てなけれ
ばならない。オブジェクトが不要になれば、他の目的のために再使用できるよう
オブジェクトのメモリは割当解除されなければならない。メモリの割当解除はC
プログラミング言語の場合のように手作業で行なうことができるし、「ごみ回収
器」を使えば自動的に処理できる。ごみ回収器にはさまざまな種類がある。たと
えば、世代別ごみ回収器はオブジェクトをその生存期間によって区別する。なぜ
なら最近割当てられたオブジェクトは一般に生存期間が短いオブジェクトだから
である。世代別ごみ回収器の一実施例において、オブジェクトは「古いスペース
」および「新しいスペース」と呼ばれる少なくとも2つのメモリ領域の一方に記
憶される。オブジェクトを初めて作成した場合、オブジェクト用のメモリは新し
いスペースから割当てられる。オブジェクトがある時間、たとえば新しいスペー
スでの4つのスキャベンジを経て生存していると、「保有権がある」として古い
スペースに移動させられる。
【0008】 オブジェクトに異なるメモリ領域を使用し、異なる領域はそこに含まれるオブ
ジェクトの生存期間によって区別することにより、世代別ごみ回収器はメモリ領
域に対して異なる割当およびゴミ回収方法を用いることができる。たとえば、新
しいスペースは頻繁に割当てられかつ捨てられるオブジェクトを多く持つ傾向に
あるので、新しいスペース内でのメモリ割当は好ましくは、「辺境コンシング」
(frontier consing)(空いている記憶場所の頭にポインタをインクリメントする
)およびコピーするごみ回収器によるゴミ回収のような安い技術によって実施さ
れる。他方で、古いスペースはより数の少ない、生存期間の長いオブジェクトを
保持する傾向にあるので、バディまたは最良優先割当技術によってメモリの割当
を行ないかつ割当解除はマーク吐き出しごみ回収器によって行なうのが好ましい
【0009】 世代別ごみ回収器の性能は新しいスペースにおけるすべてのオブジェクトに対
する「ルートセット」を計算する効率によって多いに影響される。新しいスペー
スのルートセットは、セットの推移クロージャが新しいスペースにおけるライブ
オブジェクトすべてを含むようなオブジェクトの組である。具体的には、新しい
スペースにおけるオブジェクトを参照する古いスペース内のすべてのオブジェク
トを定めることが重要である。ルートセットの計算を簡単にする1つの方法は「
覚書表」を維持することであり、これは新しいスペースにおけるどのオブジェク
トが古いスペースにおけるオブジェクトによって参照されるかを記録するために
ごみ回収器によって用いられるデータ構造である。覚書表は、割当動作によって
新しいスペースのオブジェクトへの参照が古いスペースにおけるオブジェクトに
置かれる場合に更新される。割当動作が新しいスペースのオブジェクトへの参照
を古いスペースのオブジェクトに置くかどうかを定めるために行なわれるチェッ
クは「書込バリア」と呼ばれる。効率的にこのような割当を検出するのが望まし
い。
【0010】 新しいスペースのオブジェクトへの参照が古いスペースのオブジェクトに割当
られることを検出する1つのアプローチとして、新しいスペースおよび古いスペ
ースの連続する範囲のメモリ場所をリザーブし、そのリザーブされた範囲につい
てのオブジェクトの位置をチェックすることである。たとえば、新しいスペース
のオブジェクトが常に012,000,000−012,777,777(8進
)の連続する範囲に割当てられ、かつ古いスペースのオブジェクトが常に023
,450,000−023,517,730の連続する範囲に常に割当てられる
のなら、そのリザーブされた範囲内でのオブジェクトの位置を比較することによ
り、新しいスペースのリファレンスが古いスペースのオブジェクトに記憶される
ことが識別できる。こうして、012,345,670の位置での一オブジェク
トへのリファレンスは新しいスペースにあると判断できる。なぜなら、012,
345,670の場所は012,000,000−012,777,777の範
囲内にあるからである。
【0011】 しかし、多くの実行時環境は広い連続するメモリ領域が割当てられるのを許さ
ない環境で実現されている。このような環境の場合、メモリは複数の一般的セグ
メントとしてしか得られない。その結果、オブジェクトがどのメモリ領域にある
かを決定することは、オブジェクトの場所をチェックすることでは判断できない
【0012】 オブジェクトがどのメモリ領域に属するかを定める1つのアプローチは、どの
セグメントがどのメモリ領域に割当てられるかをリストしている副データ構造を
横切ることに関わる。しかし、このアプローチは副データ構造に対して多くの高
価なポインタのデリファレンスを引起す。別のアプローチとしては、オブジェク
トが位置するスペースを記述するヘッダを各オブジェクトの頭に記憶することで
ある。しかし、オブジェクトのヘッダに記憶されている情報のアクセスはオブジ
ェクトへのメモリポインタのデリファレンスを必要とし、これは高価なものとな
る。なぜなら、命令パイプラインに穴があったり、キャッシュの不一致があった
り、さらにオブジェクトのヘッダがあるページが仮想メモリシステムによってス
ワップアウトされた場合にはページエラーとなったりするからである。
【0013】 したがって、オブジェクトの記憶特性、たとえばオブジェクトがどのメモリ領
域に割当てられているかを示す特性、を管理する実行時環境でのニーズがある。
さらに、好ましくはメモリポインタをデリファレンスすることなく、オブジェク
トの記憶特性を効率的に決定するニーズがある。さらに、古いスペースのオブジ
ェクト内に新しいスペースのオブジェクトへのリファレンスを割当ることを検出
する効率的な方法も必要である。
【0014】
【発明の概要】
これらのニーズおよび他のニーズは、マシンポインタのような、オブジェクト
へのリファレンスに対する「タグ」と呼ばれる下位ビットの一部内におけるオブ
ジェクトについての記憶特性をコード化することにより対処している。したがっ
て、記憶特性はマシンポインタをデリファレンスすることなくタグの特定ビット
を抽出しかつ調べることによって効率的に定めることができる。オブジェクトへ
のリファレンスのタグにコード化できるオブジェクトの記憶特性は、オブジェク
トがどのようにかついつ実行時環境によって管理されるメモリに記憶されるかを
示す。たとえば、タグはオブジェクトの生存期間、フォーマットおよび/または
連続性についての情報をコード化することができ、したがってタグはオブジェク
トが新しいスペースまたは古いスペースに割当てられているかどうかを示すこと
ができる。
【0015】 したがって、本発明の1つの局面はオブジェクトの記憶特性についての情報を
管理するための、コンピュータによって実行される方法、および命令を含むコン
ピュータによって読取可能な媒体に関する。オブジェクトはたとえばNビットの
整列アドレスにおいてメモリに記憶され、オブジェクトへのリファレンスは、リ
ファレンスのベースアドレス部においてメモリ内のオブジェクトの位置を記憶す
ることによって作成される。この方法は、リファレンスのタグ部において、オブ
ジェクトの記憶特性についての情報を記憶することを含む。リファレンスのタグ
部はアドレス部のビットより下位である、リファレンスの1つ以上のビットを含
む。一実施例において、オブジェクトの記憶特性についての情報は、オブジェク
トへのリファレンスのタグ部をアクセスすることによって引出される。
【0016】 本発明の別の局面は、複数のオブジェクトのメモリを管理するための、コンピ
ュータによって実行される方法、および命令を含むコンピュータによって読取可
能な媒体に関する。この方法はオブジェクトを第1のメモリ領域に割当、生存期
間に基づいて、一部のオブジェクトを第1のメモリ領域から第2のメモリ領域に
移動させることを含む。第1のメモリ領域および第2のメモリ領域の一方または
両方は、複数の不連続セグメントを含む。第2のメモリ領域におけるどの第2の
オブジェクトが第1のメモリ領域における第1のオブジェクトを参照するかにつ
いての情報のデータ構造は、メモリポインタをデリファレンスすることなく、第
1のオブジェクトへの第1のリファレンスおよび第2のオブジェクトへの第2の
リファレンスに基づいて、第1のオブジェクトが第1のメモリ領域に割当てられ
ているかどうかおよび第2のオブジェクトが第2のメモリ領域に割当てられてい
るかどうかを決定することによって維持される。一実施例において、第1のオブ
ジェクトが第1のメモリ領域に割当てられ、第2のオブジェクトが第2のメモリ
領域に割当てられていることの判断は、第1および第2のオブジェクトへのリフ
ァレンスのタグを抽出して、そのタグを比較することによって行なわれる。
【0017】 本発明の他の目的および利点は、本発明を実施する最良のモードを示す以下の
詳細な説明から容易に明らかとなる。本発明では他の実施例および異なる実施例
が可能であり、本発明から逸脱することはなくいくつかの詳細はさまざまな自明
な点で変形可能である。したがって、図面および記載は例示的なものであり、限
定するものではない。
【0018】 本発明について、限定を目的としてではなく例示を目的として添付の図面にお
いて説明している。図面では同一の参照番号は同様の構成要素を表わしている。
【0019】
【好ましい実施例の説明】
メモリを管理するための方法および装置について説明する。以下の記載では、
説明のために、多数の具体的な詳細事項を述べて本発明を十分に理解できるよう
にしている。しかしながら、本発明はこれらの具体的な詳細事項がなくとも実施
し得ることが当業者には明らかであろう。これ以外については、周知の構造およ
び装置をブロック図形式で示し、本発明が不必要に不明瞭にならないようにして
いる。
【0020】 ハードウェア概観 図1は、本発明の実施例を実現し得るコンピュータシステム100を示すブロ
ック図である。コンピュータシステム100は、情報を伝えるためのバス102
または他の通信メカニズムと、バス102に結合され情報を処理するためのプロ
セッサ104とを含む。コンピュータシステム100はまた、バス102に結合
され、情報およびプロセッサ104が実行する命令を記憶するための、ランダム
アクセスメモリ(RAM)または他の動的記憶装置といったメインメモリ106
を含む。メインメモリ106を用いて、プロセッサ104が命令を実行する間に
、実行する一時的変数または他の中間情報を記憶することもできる。コンピュー
タシステム100はさらに、バス102に結合され、静的情報およびプロセッサ
104に対する命令を記憶するための、読取専用メモリ(ROM)108または
他の静的記憶装置を含む。磁気ディスクまたは光ディスクなどの記憶装置110
が設けられ、バス102に結合されて情報および命令を記憶する。
【0021】 コンピュータシステム100を、陰極線管(CRT)といったディスプレイ1
12にバス102を介して結合し、情報をコンピュータユーザに対し表示するこ
とができる。英数字およびその他のキーを含む入力装置114は、バス102に
結合され、情報およびコマンド選択をプロセッサ104に伝える。他の種類のユ
ーザ入力装置としては、方向情報およびコマンド選択をプロセッサ104に伝え
るためかつディスプレイ112上でのカーソルの動きを制御するための、マウス
、トラックボールまたはカーソル方向キーといったカーソルコントロール116
がある。典型的にこの入力装置は第1の軸(たとえばx)および第2の軸(たと
えばy)という2つの軸における2つの自由度を有し、これによってこの入力装
置は平面での位置を特定できる。
【0022】 本発明は、オブジェクトのメモリ管理のためにコンピュータシステム100を
使用することに関する。本発明のある実施例に従うと、メモリの管理は、メイン
メモリ106に含まれる1以上の命令の1以上のシーケンスを実行するプロセッ
サ104に応答してコンピュータシステム100により行なわれる。こういった
命令は、メインメモリ106に、たとえば記憶装置110といった別のコンピュ
ータ読取可能な媒体から読込むことができる。メインメモリ106に含まれる命
令シーケンスを実行すると、プロセッサ104は、本明細書に記載するプロセス
ステップを実施する。多重処理配置の1以上のプロセッサを用いて、メインメモ
リ106に含まれる命令のシーケンスを実行することもできる。代替実施例では
、ハードワイヤード回路を、ソフトウェア命令の代わりにまたはソフトウェア命
令と組合わせて用いて、本発明を実現することができる。このように、本発明の
実施例は、ハードウェア回路およびソフトウェアの特定の組合せに限定されるも
のではない。
【0023】 本明細書で用いる「コンピュータ読取可能な媒体」という用語は、プロセッサ
104が実行する命令を与えることに関わる何らかの媒体のことを指す。このよ
うな媒体には、不揮発性媒体、揮発性媒体および伝送媒体を含め、数多くの形態
があるが、これらに限定される訳ではない。不揮発性媒体は例として記憶装置1
10などの光ディスクまたは磁気ディスクを含む。揮発性媒体はメインメモリ1
06などの動的メモリを含む。伝送媒体は、バス102を含むワイヤを含め、同
軸ケーブル、銅線および光ファイバを含む。伝送媒体は、無線周波数(RF)お
よび赤外(IR)データ通信中に発生する音波または光波の形態も取り得る。例
として、コンピュータ読取可能な媒体の一般的な形態は、フロッピー(R)ディ
スク、フレキシブルディスク、ハードディスク、磁気テープ、その他の磁気媒体
、CD−ROM、DVD、その他の光媒体、パンチカード、紙テープ、その他孔
パターンを有する物理媒体、RAM、PROM、EPROM、FLASH−EP
ROM、その他メモリチップまたはカートリッジ、以下で説明する搬送波、また
はこれら以外のコンピュータが読取可能な媒体を含む。
【0024】 種々の形態のコンピュータ読取可能な媒体を、1以上の命令の1以上のシーケ
ンスを実行のためにプロセッサ104に搬送するのに用いることができる。たと
えば、初めは命令を遠隔コンピュータの磁気ディスクに置いてもよい。遠隔コン
ピュータは、命令を、自身の動的記憶装置にロードし、モデムを用いて電話線で
送ることができる。コンピュータシステム100のローカルモデムは、電話線の
データを受け、赤外線送信器を用いてこのデータを赤外線信号に変換できる。バ
ス102に結合された赤外線検出器は、赤外線信号で搬送されるデータを受け、
このデータをバス102に置く。バス102は、このデータをメインメモリ10
6に搬送し、ここからプロセッサ104は命令を取出して実行する。任意的に、
メインメモリ106が受けた命令を、プロセッサ104による実行前または実行
後いずれかに、記憶装置110に記憶させることができる。
【0025】 コンピュータシステム100はまた、バス102に結合された通信インターフ
ェイス118を含む。通信インターフェイス118によって、ローカルネットワ
ーク122に接続されたネットワークリンク120に結合する双方向データ通信
が行なわれる。例として、通信インターフェイス118は、対応する種類の電話
線へのデータ通信接続をもたらす統合デジタル通信サービス網(ISDN)カー
ドまたはモデムでもよい。別の例として、通信インターフェイス118は、互換
LANへのデータ通信接続をもたらすローカルエリアネットワーク(LAN)カ
ードでもよい。ワイヤレスリンクを実現することもできる。どのような実現化例
においても、通信インターフェイス118は、種々の種類の情報を表わすデジタ
ルデータストリームを搬送する電気信号、電磁信号または光信号を送受信する。
【0026】 典型的に、ネットワークリンク120は、1以上のネットワークを通して他の
データ装置にデータを提供する。たとえば、ネットワークリンク120により、
ローカルネットワーク122を通して、インターネットサービスプロバイダ(I
SP)126が操作するホストコンピュータ124またはデータ機器への接続が
得られる。ISP126からは、現在は一般に「インターネット」128と呼ば
れているワールドワイドパケットデータ通信ネットワークを通して、データ通信
サービスが提供される。ローカルネットワーク122およびインターネット12
8はどちらも、デジタルデータストリームを搬送する電気信号、電磁信号または
光信号を利用する。種々のネットワークを通る信号、ネットワークリンク120
上の信号および通信インターフェイス118を通る信号は、コンピュータシステ
ム100へのおよびコンピュータシステムからのデジタルデータを運ぶ。これら
の信号は、情報を伝達する搬送波の形態の例である。
【0027】 コンピュータシステム100は、ネットワーク、ネットワークリンク120お
よび通信インターフェイス118を通して、プログラムコードを含むメッセージ
を送りデータを受けることができる。インターネットの例では、サーバ130が
、アプリケーションプログラムについて要求されたコードを、インターネット1
28、ISP126、ローカルネットワーク122および通信インターフェイス
118を通して、送信することがある。本発明に従い、このようにダウンロード
されたアプリケーションにより、本明細書で説明するようにメモリを管理する。
【0028】 受けたコードを受けたときにプロセッサ104が実行してもよく、かつ/また
は、記憶装置110または他の不揮発性記憶装置に記憶しておいて後で実行して
もよい。この態様で、コンピュータシステム100は、搬送波の形でアプリケー
ションコードを得ることができる。
【0029】 リファレンスタグ付け 本発明は、整列不変量を、強く型付けされた言語たとえばJAVA(R)(登録商標
)の動的実行時環境に導入して活用し、オブジェクトへのすべてのリファレンス
内のオブジェクトの記憶特性に関する情報をコード化できるという認識から、生
まれたものである。リファレンスの一例としてマシンポインタがあり、マシンポ
インタは、コンピュータシステムのメモリ空間内のオブジェクトの場所を、実ア
ドレスまたは仮想アドレスの形式で含む。ポインタに埋込まれた情報は、高速ア
クセスマシンレジスタにあることが多いため、参照されたオブジェクトのヘッダ
を取込むためにさらなるメモリサイクルを要しなくても、非常に高速で取出すこ
とができる。
【0030】 図2を参照して、実行時環境が管理するオブジェクトは、Nビット整列アドレ
スに記憶される(ステップ200)。言い換えれば、こうしたオブジェクトの記
憶は、2Nバイト境界を起点とする仮想アドレスで始まる。たとえば、オブジェ
クトを、3ビット整列アドレスに、すなわち23=8バイト境界に記憶すること
ができる。したがって、このようなオブジェクトの、8進数で表現される正当な
開始アドレスは、02,447,630である。しかしながら、02,447,
634といったアドレスは、オブジェクトの記憶に有効な開始アドレスではない
。結果として、ポインタの3個の最下位ビットは、異なるオブジェクトを区別す
るのに役立たない。なぜなら、この3個の最下位ビットについては8個の値のう
ちひとつのみが正当なアドレスで、残り7個の値は他のどのオブジェクトも示さ
ないからである。この整列の制限のため、02,447,630から02,44
7,637までのアドレスを有するマシンポインタは効果的に同じオブジェクト
を指す。
【0031】 したがって、Nビット整列オブジェクトへのポインタのN個の下位ビットのい
ずれかを用いて、他の情報、すなわち参照されたオブジェクトの記憶特性をコー
ド化できる。ポインタの残余の部分は「ベースアドレス」と呼ばれ、仮想メモリ
内でのオブジェクトの場所を含む。したがって、ベースアドレスのビットより下
位の、ポインタにおけるビットのいずれかを用いて、オブジェクトの記憶特性を
示すことができる。例として、3ビット整列オブジェクトへのポインタの3個の
ビットすべてを用いて、このオブジェクトの記憶特性を示すことができる。別の
例として、ビット2および3を専らオブジェクトの記憶特性を示すのに用い、ビ
ット0を他の種類のインスタンス特性を示すのに用いることができる。
【0032】 図3に示したある実現化例では、ポインタ300は、32ビットの仮想アドレ
スからなる。実行時環境内のオブジェクトが8バイト境界に整列していれば、タ
グ304に対し、ポインタ300の3個の最下位ビットを利用でき、ベースアド
レス部302を構成する残り29ビットを用いて、参照されたオブジェクトの場
所を保持する。図3は3ビットのタグ304を有する32ビットのポインタ30
0の一例を示しているが、本発明はこのような具体的なサイズに限定されない。
ポインタのサイズおよびタグのサイズを実現化例ごとに変えてもよい。たとえば
、ポインタのタグ付けは、16ビット、36ビットおよび64ビットのポインタ
および1ビットから5ビットのタグに適している。
【0033】 再び図2を参照して、オブジェクトへの、たとえばポインタというリファレン
スが作成されると、オブジェクトの場所は、このリファレンスのベースアドレス
部に記憶される(ステップ202)。参照されたオブジェクトの所望の記憶特性
は、タグ部に記憶される(ステップ204)。オブジェクトを参照するポインタ
300に基づいてオブジェクトの記憶特性を取出すために、ポインタのデリファ
レンスを行なわなずに、ポインタ300のタグ部304がアクセスされる(ステ
ップ306)。タグは種々の方法で抽出できる。たとえば、ポインタをマスクし
最下位ビット304を抽出することにより、または、ポインタ300およびオブ
ジェクトの実際の開始アドレスのポインタ差を計算することにより、タグを抽出
できる。
【0034】 タグ付けされたポインタのデリファレンスのためには、ベースアドレスをポイ
ンタから抽出してからデリファレンスを行なう。たとえば、タグ付けされたポイ
ンタ02,447,634は、デリファレンスのためにベースアドレス02,4
47,630に変換される。例として、ベースアドレスを、タグをマスクオフす
ることによって抽出できる。Cプログラミング言語では、タグを、式(ptr&
−07)でマスクオフできる。
【0035】 記憶特性 ポインタタグにおいて種類情報をコード化するSmalltalk(登録商標)およびL
ISP Machine(登録商標)実現化例とは対照的に、本発明のある実施例では、強
く型付けされた言語たとえばJAVA(R)(登録商標)のための動的実行時環境にお
ける参照タグ付けを用いて、オブジェクトの記憶特性に関する非種類情報をコー
ド化する。強く型付けされた言語のための実行時環境では、ポインタに種類情報
を記憶する必要はない。なぜなら、コンパイラは既に、たとえば一般的にはメッ
セージのディスパッチといったオブジェクトの種類を知っていることが不可欠で
ある状況における、関連の種類情報を認識しているからである。
【0036】 記憶特性は、「種類」以外の、安定したインスタンス特性であり、これは一般
に、オブジェクトがどのようにしてメモリに記憶されているか、および、オブジ
ェクトが実行時環境が管理するメモリにどれだけの期間記憶されているかに関す
る。ポインタタグに、3種類の記憶特性すなわち生存期間、フォーマットおよび
連続性をコード化しておくことが特に有利なことがわかっている。加えて、これ
らの記憶特性を組合わせたものをポインタタグにコード化することができる。
【0037】 オブジェクトの生存期間記憶特性は、オブジェクトが存続している期間を表わ
す。生存期間は、絶対的に時間で表わす、または、別のオブジェクトまたはイベ
ントに関する相対的な時間で表わすことができる。例として、「最近」割当てら
れたオブジェクトを0でタグ付けし、「より古い」オブジェクトを1でタグ付け
することができる。より正確には、世代別ごみ回収器では、タグ0は新しい空間
のオブジェクトと関連づけられ、タグ1は古い空間のオブジェクトと関連づけら
れる。この場合、より古いオブジェクトを、ごみ回収のために新しい空間が取除
かれた4つの出現よりも長く存続するものとして定義できる。別の例として、生
存期間は、オブジェクトが現在のSQLコール中にセッションにおける過去のコ
ールに割当てられたのか、または、セッション間を通して存続しているのかどう
かを示すことができる。
【0038】 オブジェクトのフォーマットは、オブジェクトの内的表現が何であるかを示す
。フォーマットは種類とは異なり、種類は論理概念であるのに対しフォーマット
は物理概念である。したがって、同じ種類の2つのオブジェクトが異なるフォー
マットすなわち内的表現を有することが可能である。あるオブジェクトのフォー
マットの一例は、別のオブジェクトへのリファレンスの内的表現を含む。このリ
ファレンスは、あるフォーマットでは固有のマシンポインタとして、および、別
のフォーマットでは数値リファレンスとして、実現できる。数値リファレンスは
、オブジェクトの場所を、メモリの割当領域の空間またはオブジェクトそのもの
の起点といったように、暗黙のベースポインタからの変位またはオフセットとし
て説明する整数である。数値リファレンスの内的表現は整数であるため、数値リ
ファレンスは、固有マシンポインタよりも移動性が高く潜在的に再配置しやすい
。実際、数値リファレンスそのものをタグ付けして、数値リファレンスが参照す
るオブジェクトの連続性といった記憶特性を記録できる。
【0039】 もうひとつ記憶特性は、オブジェクトの連続性であり、オブジェクトが連続し
たメモリ場所に記憶されているのか連続していないページに記憶されているのか
を示す。この記憶特性は、メモリが通常非連続の複数ページとしてしか得られな
い実行時環境では特に有利なことがわかっている。1つのページは、コンピュー
タシステムの(仮想)アドレス空間の固定長の連続領域である。ある実施例では
、ページサイズは4096(212)であるが、このページサイズは他の実施例で
は28(256)から216(65536)バイトといったように幅を持たせるこ
とができる。1つのオブジェクトは、複数ページに記憶されている場合、特に、
複数ページのうち1つがこれらページの別のページに連続していない場合、非連
続であるまたは「ページに分かれる」と言われる。ページに分けたオブジェクト
のフィールド、インスタンス変数または「スロット」のアドレス計算は、ページ
テーブルを通したインデックスにより非常に複雑であるが、連続したオブジェク
トについてはもっと簡単である。したがって、リファレンスタグにおいてオブジ
ェクトの連続性をコード化することにより、適切なマシン命令をディスパッチし
てページに分かれたオブジェクトのスロットにアクセスできる。
【0040】 タグは、オブジェクトの生存期間およびフォーマット(1つのフォーマット)
またはオブジェクトの連続性およびフォーマット(別のフォーマット)といった
ように、記憶特性の組合せをコード化できる。表1はこのような特性に対するタ
グ値に可能な1つの割当を列挙している。
【0041】
【表1】
【0042】 オブジェクトの記憶特性はオブジェクトへのすべてのリファレンスにおいてコ
ード化されているため、オブジェクトの記憶特性に生じた変化をオブジェクトへ
のリファレンスすべてに反映させなければならないことになる。しかしながら、
この制限は、記憶特性のタグ付けにおいては問題ではない。例として、いくつか
の特性は、フォーマットまたは連続性といったように、本質的に永久的である。
このようなポインタタグの変更はもしあったとしてもごく稀にしか起こらない。
別の例として、世代別ごみ回収器により、新しい空間のオブジェクトが古い空間
に入れられた場合、このオブジェクトに対するすべてのリファレンスは、どんな
場合でも必ずこの回収器によって再配置されねばならない。また、この再配置の
一部として、生存期間がオブジェクトの永久特性でないとしても、タグを更新で
きる。
【0043】 ポインタタグを用いた書込バリアの実現 図4は、ポインタタグを用いて世代別ごみ回収器において効率的に書込バリア
を実現できるようにする方法を説明するフローチャートを示す。世代別ごみ回収
器内で、オブジェクトは新しい空間に割当てられ(ステップ400)、オブジェ
クトのいくつかはその生存期間に基づいて古い空間に移される(ステップ402
)。覚書表と呼ばれるデータ構造が、書込バッファに維持されている。すなわち
、ターゲットオブジェクトに対するターゲットポインタの、ソースポインタが参
照するソースオブジェクト内のフィールドへの割当てに応じて、覚書表は、条件
付きで更新される(ステップ404)。より具体的には、覚書表は、ターゲット
オブジェクトが新しい空間にありソースオブジェクトが古い空間にあると判断さ
れた場合に更新される。
【0044】 ステップ410−416は、ある実施例に従いこの判断をポインタタグを用い
て行なう方法を説明している。ステップ410で、ターゲットタグが、マスキン
ングまたはポインタ差の計算により、ターゲットポインタから抽出され、ステッ
プ412で、ソースタグがソースポインタから抽出される。これらの動作は典型
的に、多くのコンピュータアーキテクチャではレジスタごとの動作であり、メモ
リポインタのデリファレンスを含まない。結果として、一般にはメモリポインタ
のデリファレンスに関連するオーバヘッド、たとえば、システムバス上にメモリ
読出サイクルを発生させることまたはメモリフェッチの実行は回避される。した
がって、ポインタタグは、キャッシュミスまたは仮想メモリページの誤りを引き
起こす可能性のある、従来の方策の損失を避ける役割を果たす。特に、レジスタ
動作のみを用いることによって、従来のオブジェクトヘッダ方法に比べて、性能
が大幅に向上する。
【0045】 ステップ414で、ソースタグおよび宛先タグを検査し、割当ステートメント
が、新しい空間のターゲットオブジェクトを参照する古い空間のソースオブジェ
クトとなっているかどうか判断する。この検査が真であれば、覚書表が更新され
る(ステップ416)。ある実施例では、この検査を簡単に、ソースタグを古い
空間の値と比較し、ターゲットタグを新しい空間の値と比較することによって行
なうことができる。たとえば、Cプログラミング言語では、式((source & 07) =
= OLDSPACE && (target & 07) == NEWSPACE)で、この検査を行なうことができる
。式中、sourceはソースオブジェクトへのポインタであり、targetはターゲット
オブジェクトへのポインタであり、OLDSPACEおよびNEWSPACEは所定の値たとえば
それぞれ1および0に定められた明白な定数である。
【0046】 上記の式により検査を行なうことができるが、タグの値を適切に選択すること
によってより効率的に行なうことができる。たとえば、1という古い空間のタグ
および0という新しい空間のタグを用いれば、この判断を、(source & 07) > (t
arget & 07)という、不一致に関する比較によって行なうことができる。さらな
るタグの値を用いると、たとえば、ポインタフォーマットオブジェクトへの割当
を含むすべての書込動作が数値リファレンスフォーマットオブジェクトへの書込
動作を含むものと別にされている場合、この比較をなおも世代別ごみ回収器に用
いることができる。この状況は、世代別ごみ回収器を呼出期間メモリにおけるポ
インタフォーマット化オブジェクトに対してのみ用い、数値リファレンスフォー
マット化オブジェクトがセッション期間メモリに割当てられている場合に生じ得
る。
【0047】 本発明について現在最も実用的かつ好ましい実施例だと考えられるものと関連
づけて説明してきたが、本発明は、上記開示の実施例に限定されるのではなく、
前掲のクレームの精神および範囲に含まれる種々の変形例および等価例をカバー
することが意図されていることが、理解されるであろう。
【図面の簡単な説明】
【図1】 実施例を実現するのに使用できるコンピュータシステムを示すブ
ロック図である。
【図2】 タグ付きポインタを作成および使用するステップを示すフローチ
ャートである。
【図3】 タグ付きポインタのある実現化例を概略的に示す。
【図4】 覚書表を書込バリアに維持するステップを示すフローチャートで
ある。
【手続補正書】
【提出日】平成13年8月29日(2001.8.29)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),OA(BF,BJ ,CF,CG,CI,CM,GA,GN,GW,ML, MR,NE,SN,TD,TG),AP(GH,GM,K E,LS,MW,SD,SL,SZ,TZ,UG,ZW ),EA(AM,AZ,BY,KG,KZ,MD,RU, TJ,TM),AE,AL,AM,AT,AU,AZ, BA,BB,BG,BR,BY,CA,CH,CN,C R,CU,CZ,DE,DK,DM,EE,ES,FI ,GB,GD,GE,GH,GM,HR,HU,ID, IL,IN,IS,JP,KE,KG,KP,KR,K Z,LC,LK,LR,LS,LT,LU,LV,MA ,MD,MG,MK,MN,MW,MX,NO,NZ, PL,PT,RO,RU,SD,SE,SG,SI,S K,SL,TJ,TM,TR,TT,TZ,UA,UG ,UZ,VN,YU,ZA,ZW (72)発明者 ベンソン,ピーター アメリカ合衆国、84716 ユタ州、ボール ダー、ブル・トレイル・ロード、1115 Fターム(参考) 5B060 AA10

Claims (40)

    【特許請求の範囲】
  1. 【請求項1】 オブジェクトの記憶特性についての情報を管理する方法であ
    って、コンピュータによって実行される オブジェクトをメモリに記憶するステップと、 リファレンスのベースアドレス部において、メモリ内のオブジェクトの位置を
    記憶することによってオブジェクトへのリファレンスを作成するステップと、 リファレンスのタグ部において、オブジェクトの記憶特性についての情報をス
    トアするステップとを含み、リファレンスのタグ部はアドレス部のビットより下
    位の、リファレンスの1つ以上のビットを含む、方法。
  2. 【請求項2】 オブジェクトをメモリに記憶するステップは、Nビットの整
    列アドレスにおいてオブジェクトをメモリに記憶するステップを含む、請求項1
    に記載の方法。
  3. 【請求項3】 タグ部は、リファレンスのN個の最下位ビットを含む、請求
    項2に記載の方法。
  4. 【請求項4】 オブジェクトへのリファレンスのタグ部をアクセスすること
    により、オブジェクトの記憶特性についての情報を取り出すステップをさらに含
    む、請求項2に記載の方法。
  5. 【請求項5】 リファレンスのタグ部において、オブジェクトの記憶特性に
    ついての情報を記憶するステップは、タグ部において、オブジェクトの生存期間
    についての情報を記憶するステップを含む、請求項2に記載の方法。
  6. 【請求項6】 タグ部において、オブジェクトの生存期間についての情報を
    記憶するステップは、タグ部において、オブジェクトが少なくとも所定の数のご
    み回収イベントだけ生存したかどうかを示す情報を記憶するステップを含む、請
    求項2に記載の方法。
  7. 【請求項7】 リファレンスのタグ部において、オブジェクトの記憶特性に
    ついての情報を記憶するステップは、タグ部において、オブジェクトの記憶フォ
    ーマットについての情報を記憶するステップを含む、請求項2に記載の方法。
  8. 【請求項8】 オブジェクトはリファレンスを含み、さらに タグ部において、オブジェクトの記憶フォーマットについての情報を記憶する
    ステップは、タグ部において、オブジェクト内に含まれるリファレンスのフォー
    マットについての情報を記憶するステップを含む、請求項7に記載の方法。
  9. 【請求項9】 タグ部において、オブジェクト内に含まれるリファレンスの
    フォーマットについての情報を記憶するステップは、タグ部において、含まれる
    リファレンスはマシンポインタとして、または数値リファレンスとして記憶され
    ているかどうかを示す情報を記憶するステップを含む、請求項8に記載の方法。
  10. 【請求項10】 リファレンスのタグ部において、オブジェクトの記憶特性
    についての情報を記憶するステップは、タグ部において、オブジェクの連続性に
    ついての情報を記憶するステップを含む、請求項2に記載の方法。
  11. 【請求項11】 タグ部において、オブジェクトの連続性についての情報を
    記憶するステップは、タグ部において、オブジェクトが複数のページに記憶され
    ているかどうかを示す情報を記憶するステップを含む、請求項10に記載の方法
  12. 【請求項12】 タグ部において、オブジェクトが複数のページに記憶され
    ているかどうかを示す情報を記憶するステップは、タグ部において、オブジェク
    トは他のページに連続しない少なくとも1つのページに記憶されているかどうか
    を示す情報を記憶するステップを含む、請求項11に記載の方法。
  13. 【請求項13】 リファレンスのタグ部において、オブジェクトの記憶特性
    についての情報を記憶するステップは、タグ部において、(a)オブジェクトの
    生存期間およびオブジェクトに含まれるリファレンスは第1のフォーマットで記
    憶されていることの両方を示す情報、または(b)オブジェクトの連続性および
    オブジェクトに含まれるリファレンスは第1のフォーマット以外の第2のフォー
    マットで記憶されていることの両方を示す情報のどちらかを記憶するステップを
    含む、請求項2に記載の方法。
  14. 【請求項14】 Nはちょうど3である、請求項1に記載の方法。
  15. 【請求項15】 リファレンスを作成するステップは、マシンポインタを初
    期化するステップを含む、請求項1に記載の方法。
  16. 【請求項16】 リファレンスを作成するステップは、数値リファレンスを
    初期化するステップを含む、請求項1に記載の方法。
  17. 【請求項17】 複数のオブジェクトのメモリを管理する方法であって、コ
    ンピュータによって実行される オブジェクトを第1のメモリ領域に割当てるステップと、 オブジェクトの一部についてのそれぞれの生存期間に基づいて、オブジェクト
    の一部を第1のメモリ領域から第2のメモリ領域に移動させるステップと、 第2のメモリ領域におけるどの第2のオブジェクトが第1のメモリ領域の第1
    のオブジェクトを参照するかについてのデータ構造を維持するステップとを含み
    、この維持するステップは、 メモリポインタをデリファレンスすることなく、第1のオブジェクトへの第1
    のリファレンス内に含まれる第1の情報および第2のオブジェクトへの第2のリ
    ファレンス内に含まれる第2の情報に基づき、第1のオブジェクトが第1のメモ
    リ領域に割当てられているかどうかおよび第2のオブジェクトが第2のメモリ領
    域に割当てられているかどうかを定めることにより行なわれ、 第1のメモリ領域および第2のメモリ領域のどちらかはそれぞれ複数の不連続
    ページを含む、方法。
  18. 【請求項18】 メモリポインタをデリファレンスすることなく、第1のオ
    ブジェクトへの第1のリファレンスおよび第2のオブジェクトへの第2のリファ
    レンスに基づいて第1のオブジェクトが第1のメモリ領域に割当てられているか
    どうかおよび第2のオブジェクトが第2のメモリ領域に割当てられているかどう
    かを定めるステップは、 第1のリファレンスから第1の1つ以上のビットを抽出するステップを含み、
    前記第1の1つ以上のビットは、第1のオブジェクトのアドレスを記憶するため
    のビットより下位であり、さらに 第2のリファレンスから第2の1つ以上のビットを抽出するステップを含み、
    前記第2の1つ以上のビットは、第1のオブジェクトのアドレスを記憶するため
    のビットより下位であり、さらに 第1の1つ以上のビットおよび第2の1つ以上のビットに基づき、第1のオブ
    ジェクトが第1のメモリ領域に割当てられているかどうかおよび第2のオブジェ
    クトが第2のメモリ領域に割当てられているかどうかを定めるステップを含む、
    請求項17に記載の方法。
  19. 【請求項19】 第1の1つ以上のビットおよび第2の1つ以上のビットに
    基づいて第1のオブジェクトが第1のメモリ領域に割当てられているかどうかお
    よび第2のオブジェクトが第2のメモリ領域に割当てられているかどうかを定め
    るステップは、所定の不一致について第1の1つ以上のビットおよび第2の1つ
    以上のビットを比較するステップを含む、請求項18に記載の方法。
  20. 【請求項20】 第1のリファレンスの第1の1つ以上のビットを抽出する
    ステップは、第1のリファレンスの1つ以上の下位ビットを抽出するステップを
    含み、さらに 第1のリファレンスの第2の1つ以上のビットを抽出するステップは、第2の
    リファレンスの1つ以上の下位ビットを抽出するステップを含む、請求項18に
    記載の方法。
  21. 【請求項21】 オブジェクトの記憶特性についての情報を管理するための
    命令を含む、コンピュータによって読取可能な媒体であって、前記命令は実行さ
    れると1つ以上のプロセッサに、 オブジェクトをメモリに記憶するステップと、 リファレンスのベースアドレス部において、メモリ内のオブジェクトの位置を
    記憶することによりオブジェクトへのリファレンスを作成するステップと、 リファレンスのタグ部において、オブジェクトの記憶特性についての情報を記
    憶するステップとを実行させるようになっており、リファレンスのタグ部はアド
    レス部のビットより下位である、リファレンスの1つ以上のビットを含む、コン
    ピュータによって読取可能な媒体。
  22. 【請求項22】 オブジェクトをメモリに記憶するステップは、Nビットの
    整列アドレスにおいてオブジェクトをメモリに記憶するステップを含む、請求項
    21に記載のコンピュータによって読取可能な媒体。
  23. 【請求項23】 タグ部はリファレンスのN個の最下位ビットを含む、請求
    項22に記載のコンピュータによって読取可能な媒体。
  24. 【請求項24】 命令は、実行されると、1つ以上のプロセッサに、オブジ
    ェクトへのリファレンスのタグ部をアクセスすることにより、オブジェクトの記
    憶特性についての情報を取り出すステップを実行させるようになっている、請求
    項22に記載のコンピュータによって読取可能な媒体。
  25. 【請求項25】 リファレンスのタグ部において、オブジェクトの記憶特性
    についての情報を記憶するステップは、タグ部において、オブジェクトの生存期
    間についての情報を記憶するステップを含む、請求項22に記載のコンピュータ
    によって読取可能な媒体。
  26. 【請求項26】 タグ部において、オブジェクトの生存期間についての情報
    を記憶するステップは、タグ部において、オブジェクトが少なくとも所定の数の
    ごみ回収イベントだけ生存したかどうかを示す情報を記憶するステップを含む、
    請求項22に記載の方法コンピュータによって読取可能な媒体。
  27. 【請求項27】 リファレンスのタグ部において、オブジェクトの記憶特性
    についての情報を記憶するステップは、タグ部において、オブジェクトの記憶フ
    ォーマットについての情報を記憶するステップを含む、請求項22に記載のコン
    ピュータによって読取可能な媒体。
  28. 【請求項28】 オブジェクトはリファレンスを含み、さらに タグ部において、オブジェクトの記憶フォーマットについての情報を記憶する
    ステップは、タグ部において、オブジェクト内に含まれるリファレンスのフォー
    マットについての情報を記憶するステップを含む、請求項27に記載のコンピュ
    ータによって読取可能な媒体。
  29. 【請求項29】 タグ部において、オブジェクト内に含まれるリファレンス
    のフォーマットについての情報を記憶するステップは、タグ部において、含まれ
    るリファレンスはマシンポインタとして、または数値リファレンスとして記憶さ
    れているかどうかを示す情報を記憶するステップを含む、請求項28に記載のコ
    ンピュータによって読取可能な媒体。
  30. 【請求項30】 リファレンスのタグ部において、オブジェクトの記憶特性
    についての情報を記憶するステップは、タグ部において、オブジェクの連続性に
    ついての情報を記憶するステップを含む、請求項22に記載のコンピュータによ
    って読取可能な媒体。
  31. 【請求項31】 タグ部において、オブジェクトの連続性についての情報を
    記憶するステップは、タグ部において、オブジェクトが複数のページに記憶され
    ているかどうかを示す情報を記憶するステップを含む、請求項30に記載のコン
    ピュータによって読取可能な媒体。
  32. 【請求項32】 タグ部において、オブジェクトが複数のページに記憶され
    ているかどうかを示す情報を記憶するステップは、タグ部において、オブジェク
    トは他のページに連続しない少なくとも1つのページに記憶されているかどうか
    を示す情報を記憶するステップを含む、請求項31に記載のコンピュータによっ
    て読取可能な媒体。
  33. 【請求項33】 リファレンスのタグ部において、オブジェクトの記憶特性
    についての情報を記憶するステップは、タグ部において、(a)オブジェクトの
    生存期間およびオブジェクトに含まれるリファレンスは第1のフォーマットで記
    憶されていることの両方を示す情報、または(b)オブジェクトの連続性および
    オブジェクトに含まれるリファレンスは第1のフォーマット以外の第2のフォー
    マットで記憶されていることの両方を示す情報のどちらかを記憶するステップを
    含む、請求項22に記載のコンピュータによって読取可能な媒体。
  34. 【請求項34】 Nはちょうど3である、請求項21に記載のコンピュータ
    によって読取可能な媒体。
  35. 【請求項35】 リファレンスを作成するステップは、マシンポインタを初
    期化するステップを含む、請求項21に記載のコンピュータによって読取可能な
    媒体。
  36. 【請求項36】 リファレンスを作成するステップは、数値リファレンスを
    初期化するステップを含む、請求項21に記載のコンピュータによって読取可能
    な媒体。
  37. 【請求項37】 複数のオブジェクトのメモリを管理するための命令を含む
    、コンピュータによって読取可能な媒体であって、前記命令は実行されると、1
    つ以上のプロセッサに オブジェクトを第1のメモリ領域に割当てるステップと、 オブジェクトの一部についてのそれぞれの生存期間に基づいて、オブジェクト
    の一部を第1のメモリ領域から第2のメモリ領域に移動させるステップと、 第2のメモリ領域におけるどの第2のオブジェクトが第1のメモリ領域の第1
    のオブジェクトを参照するかについてのデータ構造を維持するステップとを実行
    させるようになっており、この維持するステップは、 メモリポインタをデリファレンスすることなく、第1のオブジェクトへの第1
    のリファレンス内に含まれる第1の情報および第2のオブジェクトへの第2のリ
    ファレンス内に含まれる第2の情報に基づき、第1のオブジェクトが第1のメモ
    リ領域に割当てられているかどうかおよび第2のオブジェクトが第2のメモリ領
    域に割当てられているかどうかを定めることにより行なわれ、 第1のメモリ領域および第2のメモリ領域のどちらかはそれぞれ複数の不連続
    ページを含む、コンピュータによって読取可能な媒体。
  38. 【請求項38】 メモリポインタをデリファレンスすることなく、第1のオ
    ブジェクトへの第1のリファレンスおよび第2のオブジェクトへの第2のリファ
    レンスに基づいて第1のオブジェクトが第1のメモリ領域に割当てられているか
    どうかおよび第2のオブジェクトが第2のメモリ領域に割当てられているかどう
    かを定めるステップは、 第1のリファレンスから第1の1つ以上のビットを抽出するステップを含み、
    前記第1の1つ以上のビットは、第1のオブジェクトのアドレスを記憶するため
    のビットより下位であり、さらに 第2のリファレンスから第2の1つ以上のビットを抽出するステップを含み、
    前記第2の1つ以上のビットは、第1のオブジェクトのアドレスを記憶するため
    のビットより下位であり、さらに 第1の1つ以上のビットおよび第2の1つ以上のビットに基づき、第1のオブ
    ジェクトが第1のメモリ領域に割当てられているかどうかおよび第2のオブジェ
    クトが第2のメモリ領域に割当てられているかどうかを定めるステップを含む、
    請求項37に記載のコンピュータによって読取可能な媒体。
  39. 【請求項39】 第1の1つ以上のビットおよび第2の1つ以上のビットに
    基づいて第1のオブジェクトが第1のメモリ領域に割当てられているかどうかお
    よび第2のオブジェクトが第2のメモリ領域に割当てられているかどうかを定め
    るステップは、所定の不一致について第1の1つ以上のビットおよび第2の1つ
    以上のビットを比較するステップを含む、請求項38に記載のコンピュータによ
    って読取可能な媒体。
  40. 【請求項40】 第1のリファレンスの第1の1つ以上のビットを抽出する
    ステップは、第1のリファレンスの1つ以上の下位ビットを抽出するステップを
    含み、さらに 第1のリファレンスの第2の1つ以上のビットを抽出するステップは、第2の
    リファレンスの1つ以上の下位ビットを抽出するステップを含む、請求項38に
    記載のコンピュータによって読取可能な媒体。
JP2000598926A 1999-02-11 2000-02-11 実行時環境でのメモリ管理 Expired - Lifetime JP3908909B2 (ja)

Applications Claiming Priority (3)

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

Publications (2)

Publication Number Publication Date
JP2002536761A true JP2002536761A (ja) 2002-10-29
JP3908909B2 JP3908909B2 (ja) 2007-04-25

Family

ID=22938499

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000598926A Expired - Lifetime JP3908909B2 (ja) 1999-02-11 2000-02-11 実行時環境でのメモリ管理

Country Status (8)

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

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
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 (en) 2003-05-07
CA2362463C (en) 2003-10-28
US6457019B1 (en) 2002-09-24
DE60002559T2 (de) 2004-04-08
EP1153343A1 (en) 2001-11-14
CA2362463A1 (en) 2000-08-17
WO2000048074A1 (en) 2000-08-17

Similar Documents

Publication Publication Date Title
JP2002536761A (ja) 実行時環境でのメモリ管理
US6279012B1 (en) Reducing the memory footprint of a session duration semispace
US7290113B2 (en) Method and apparatus for virtual memory mapping and transaction management in an object-oriented database system
US6931423B2 (en) Write-barrier maintenance in a garbage collector
US6529919B1 (en) Incremental class unloading in a train-algorithm-based garbage collector
US6499095B1 (en) Machine-independent memory management system within a run-time environment
US7136887B2 (en) Method and mechanism for finding references in a card in time linear in the size of the card in a garbage-collected heap
US6434577B1 (en) Scalable-remembered-set garbage collection
EP0848324B1 (en) Using three-state references to manage access to referenced objects
US7249235B2 (en) Architecture for a scalable and user-extensible heap dump analysis tool
US6604182B1 (en) Methods for managing memory in a run-time environment including activation and deactivation of objects
US20050268067A1 (en) Method and apparatus for memory-mapped input/output
US20040167947A1 (en) Space-efficient, depth-first parallel copying collection technique making use of work-stealing on the same structures that maintain the stack of items to be scanned
US6434685B1 (en) Paged memory management system within a run-time environment
US20040088339A1 (en) Efficient encoding of references into a collection set
JPH05274152A (ja) オブジェクト管理方式
US6480507B1 (en) Communication protocol stack apparatus and method of implementing same
US7793055B2 (en) Transferring memory buffers between multiple processing entities
US6421689B1 (en) Moderately conservative, mostly copying 2 space garbage collector in the nursery of a generational memory manager
US9158682B2 (en) Cache memory garbage collector
US6996694B1 (en) Basing computer memory allocation for aggregate data types on data separate from a type definition
US20050268053A1 (en) Architecture for a scalable heap analysis tool
US6760825B1 (en) Memory management using migration for a run-time environment
US7039664B2 (en) Combining entries in a card object table
US6671783B1 (en) Method and article for managing references between objects in memories of different durations in a run-time environment

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20051206

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20060303

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20060310

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060601

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060627

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061020

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20060922

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20061030

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070109

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070119

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 3908909

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110126

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120126

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130126

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130126

Year of fee payment: 6

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term