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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
- G06F12/0269—Incremental or concurrent garbage collection, e.g. in real-time systems
- G06F12/0276—Generational garbage collection
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99944—Object-oriented database structure
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99953—Recoverability
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
Description
と独立したメモリ管理システム」と題される、米国特許出願第09/248,2
91号(書類番号50277−172;OID−1997−48−02)。ここ
に引用により援用される。
ファレンスのアドレス計算」と題される、米国特許出願第09/248,294
号(書類番号50277−179;OID−1997−48−03)。ここに引
用により援用される。
ングメモリ管理システム」と題される、米国特許出願第09/248,297号
(書類番号50277−261;OID−1997−48−17)。ここに引用
により援用される。
モリの管理に関する。
いて、オブジェクトのメモリ管理は非常に重要である。具体的には、動的実行時
環境ではオブジェクトに対するメモリの割当および割当解除を処理しなければな
らない。オブジェクトとはデータをカプセル化するエンティティであり、JAVA(R
)のような環境ではオブジェクトに関連する動作を含む。
ばならない。オブジェクトが不要になれば、他の目的のために再使用できるよう
オブジェクトのメモリは割当解除されなければならない。メモリの割当解除はC
プログラミング言語の場合のように手作業で行なうことができるし、「ごみ回収
器」を使えば自動的に処理できる。ごみ回収器にはさまざまな種類がある。たと
えば、世代別ごみ回収器はオブジェクトをその生存期間によって区別する。なぜ
なら最近割当てられたオブジェクトは一般に生存期間が短いオブジェクトだから
である。世代別ごみ回収器の一実施例において、オブジェクトは「古いスペース
」および「新しいスペース」と呼ばれる少なくとも2つのメモリ領域の一方に記
憶される。オブジェクトを初めて作成した場合、オブジェクト用のメモリは新し
いスペースから割当てられる。オブジェクトがある時間、たとえば新しいスペー
スでの4つのスキャベンジを経て生存していると、「保有権がある」として古い
スペースに移動させられる。
ジェクトの生存期間によって区別することにより、世代別ごみ回収器はメモリ領
域に対して異なる割当およびゴミ回収方法を用いることができる。たとえば、新
しいスペースは頻繁に割当てられかつ捨てられるオブジェクトを多く持つ傾向に
あるので、新しいスペース内でのメモリ割当は好ましくは、「辺境コンシング」
(frontier consing)(空いている記憶場所の頭にポインタをインクリメントする
)およびコピーするごみ回収器によるゴミ回収のような安い技術によって実施さ
れる。他方で、古いスペースはより数の少ない、生存期間の長いオブジェクトを
保持する傾向にあるので、バディまたは最良優先割当技術によってメモリの割当
を行ないかつ割当解除はマーク吐き出しごみ回収器によって行なうのが好ましい
。
する「ルートセット」を計算する効率によって多いに影響される。新しいスペー
スのルートセットは、セットの推移クロージャが新しいスペースにおけるライブ
オブジェクトすべてを含むようなオブジェクトの組である。具体的には、新しい
スペースにおけるオブジェクトを参照する古いスペース内のすべてのオブジェク
トを定めることが重要である。ルートセットの計算を簡単にする1つの方法は「
覚書表」を維持することであり、これは新しいスペースにおけるどのオブジェク
トが古いスペースにおけるオブジェクトによって参照されるかを記録するために
ごみ回収器によって用いられるデータ構造である。覚書表は、割当動作によって
新しいスペースのオブジェクトへの参照が古いスペースにおけるオブジェクトに
置かれる場合に更新される。割当動作が新しいスペースのオブジェクトへの参照
を古いスペースのオブジェクトに置くかどうかを定めるために行なわれるチェッ
クは「書込バリア」と呼ばれる。効率的にこのような割当を検出するのが望まし
い。
られることを検出する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の範
囲内にあるからである。
ない環境で実現されている。このような環境の場合、メモリは複数の一般的セグ
メントとしてしか得られない。その結果、オブジェクトがどのメモリ領域にある
かを決定することは、オブジェクトの場所をチェックすることでは判断できない
。
セグメントがどのメモリ領域に割当てられるかをリストしている副データ構造を
横切ることに関わる。しかし、このアプローチは副データ構造に対して多くの高
価なポインタのデリファレンスを引起す。別のアプローチとしては、オブジェク
トが位置するスペースを記述するヘッダを各オブジェクトの頭に記憶することで
ある。しかし、オブジェクトのヘッダに記憶されている情報のアクセスはオブジ
ェクトへのメモリポインタのデリファレンスを必要とし、これは高価なものとな
る。なぜなら、命令パイプラインに穴があったり、キャッシュの不一致があった
り、さらにオブジェクトのヘッダがあるページが仮想メモリシステムによってス
ワップアウトされた場合にはページエラーとなったりするからである。
域に割当てられているかを示す特性、を管理する実行時環境でのニーズがある。
さらに、好ましくはメモリポインタをデリファレンスすることなく、オブジェク
トの記憶特性を効率的に決定するニーズがある。さらに、古いスペースのオブジ
ェクト内に新しいスペースのオブジェクトへのリファレンスを割当ることを検出
する効率的な方法も必要である。
へのリファレンスに対する「タグ」と呼ばれる下位ビットの一部内におけるオブ
ジェクトについての記憶特性をコード化することにより対処している。したがっ
て、記憶特性はマシンポインタをデリファレンスすることなくタグの特定ビット
を抽出しかつ調べることによって効率的に定めることができる。オブジェクトへ
のリファレンスのタグにコード化できるオブジェクトの記憶特性は、オブジェク
トがどのようにかついつ実行時環境によって管理されるメモリに記憶されるかを
示す。たとえば、タグはオブジェクトの生存期間、フォーマットおよび/または
連続性についての情報をコード化することができ、したがってタグはオブジェク
トが新しいスペースまたは古いスペースに割当てられているかどうかを示すこと
ができる。
管理するための、コンピュータによって実行される方法、および命令を含むコン
ピュータによって読取可能な媒体に関する。オブジェクトはたとえばNビットの
整列アドレスにおいてメモリに記憶され、オブジェクトへのリファレンスは、リ
ファレンスのベースアドレス部においてメモリ内のオブジェクトの位置を記憶す
ることによって作成される。この方法は、リファレンスのタグ部において、オブ
ジェクトの記憶特性についての情報を記憶することを含む。リファレンスのタグ
部はアドレス部のビットより下位である、リファレンスの1つ以上のビットを含
む。一実施例において、オブジェクトの記憶特性についての情報は、オブジェク
トへのリファレンスのタグ部をアクセスすることによって引出される。
ュータによって実行される方法、および命令を含むコンピュータによって読取可
能な媒体に関する。この方法はオブジェクトを第1のメモリ領域に割当、生存期
間に基づいて、一部のオブジェクトを第1のメモリ領域から第2のメモリ領域に
移動させることを含む。第1のメモリ領域および第2のメモリ領域の一方または
両方は、複数の不連続セグメントを含む。第2のメモリ領域におけるどの第2の
オブジェクトが第1のメモリ領域における第1のオブジェクトを参照するかにつ
いての情報のデータ構造は、メモリポインタをデリファレンスすることなく、第
1のオブジェクトへの第1のリファレンスおよび第2のオブジェクトへの第2の
リファレンスに基づいて、第1のオブジェクトが第1のメモリ領域に割当てられ
ているかどうかおよび第2のオブジェクトが第2のメモリ領域に割当てられてい
るかどうかを決定することによって維持される。一実施例において、第1のオブ
ジェクトが第1のメモリ領域に割当てられ、第2のオブジェクトが第2のメモリ
領域に割当てられていることの判断は、第1および第2のオブジェクトへのリフ
ァレンスのタグを抽出して、そのタグを比較することによって行なわれる。
詳細な説明から容易に明らかとなる。本発明では他の実施例および異なる実施例
が可能であり、本発明から逸脱することはなくいくつかの詳細はさまざまな自明
な点で変形可能である。したがって、図面および記載は例示的なものであり、限
定するものではない。
いて説明している。図面では同一の参照番号は同様の構成要素を表わしている。
説明のために、多数の具体的な詳細事項を述べて本発明を十分に理解できるよう
にしている。しかしながら、本発明はこれらの具体的な詳細事項がなくとも実施
し得ることが当業者には明らかであろう。これ以外については、周知の構造およ
び装置をブロック図形式で示し、本発明が不必要に不明瞭にならないようにして
いる。
ック図である。コンピュータシステム100は、情報を伝えるためのバス102
または他の通信メカニズムと、バス102に結合され情報を処理するためのプロ
セッサ104とを含む。コンピュータシステム100はまた、バス102に結合
され、情報およびプロセッサ104が実行する命令を記憶するための、ランダム
アクセスメモリ(RAM)または他の動的記憶装置といったメインメモリ106
を含む。メインメモリ106を用いて、プロセッサ104が命令を実行する間に
、実行する一時的変数または他の中間情報を記憶することもできる。コンピュー
タシステム100はさらに、バス102に結合され、静的情報およびプロセッサ
104に対する命令を記憶するための、読取専用メモリ(ROM)108または
他の静的記憶装置を含む。磁気ディスクまたは光ディスクなどの記憶装置110
が設けられ、バス102に結合されて情報および命令を記憶する。
12にバス102を介して結合し、情報をコンピュータユーザに対し表示するこ
とができる。英数字およびその他のキーを含む入力装置114は、バス102に
結合され、情報およびコマンド選択をプロセッサ104に伝える。他の種類のユ
ーザ入力装置としては、方向情報およびコマンド選択をプロセッサ104に伝え
るためかつディスプレイ112上でのカーソルの動きを制御するための、マウス
、トラックボールまたはカーソル方向キーといったカーソルコントロール116
がある。典型的にこの入力装置は第1の軸(たとえばx)および第2の軸(たと
えばy)という2つの軸における2つの自由度を有し、これによってこの入力装
置は平面での位置を特定できる。
使用することに関する。本発明のある実施例に従うと、メモリの管理は、メイン
メモリ106に含まれる1以上の命令の1以上のシーケンスを実行するプロセッ
サ104に応答してコンピュータシステム100により行なわれる。こういった
命令は、メインメモリ106に、たとえば記憶装置110といった別のコンピュ
ータ読取可能な媒体から読込むことができる。メインメモリ106に含まれる命
令シーケンスを実行すると、プロセッサ104は、本明細書に記載するプロセス
ステップを実施する。多重処理配置の1以上のプロセッサを用いて、メインメモ
リ106に含まれる命令のシーケンスを実行することもできる。代替実施例では
、ハードワイヤード回路を、ソフトウェア命令の代わりにまたはソフトウェア命
令と組合わせて用いて、本発明を実現することができる。このように、本発明の
実施例は、ハードウェア回路およびソフトウェアの特定の組合せに限定されるも
のではない。
104が実行する命令を与えることに関わる何らかの媒体のことを指す。このよ
うな媒体には、不揮発性媒体、揮発性媒体および伝送媒体を含め、数多くの形態
があるが、これらに限定される訳ではない。不揮発性媒体は例として記憶装置1
10などの光ディスクまたは磁気ディスクを含む。揮発性媒体はメインメモリ1
06などの動的メモリを含む。伝送媒体は、バス102を含むワイヤを含め、同
軸ケーブル、銅線および光ファイバを含む。伝送媒体は、無線周波数(RF)お
よび赤外(IR)データ通信中に発生する音波または光波の形態も取り得る。例
として、コンピュータ読取可能な媒体の一般的な形態は、フロッピー(R)ディ
スク、フレキシブルディスク、ハードディスク、磁気テープ、その他の磁気媒体
、CD−ROM、DVD、その他の光媒体、パンチカード、紙テープ、その他孔
パターンを有する物理媒体、RAM、PROM、EPROM、FLASH−EP
ROM、その他メモリチップまたはカートリッジ、以下で説明する搬送波、また
はこれら以外のコンピュータが読取可能な媒体を含む。
ンスを実行のためにプロセッサ104に搬送するのに用いることができる。たと
えば、初めは命令を遠隔コンピュータの磁気ディスクに置いてもよい。遠隔コン
ピュータは、命令を、自身の動的記憶装置にロードし、モデムを用いて電話線で
送ることができる。コンピュータシステム100のローカルモデムは、電話線の
データを受け、赤外線送信器を用いてこのデータを赤外線信号に変換できる。バ
ス102に結合された赤外線検出器は、赤外線信号で搬送されるデータを受け、
このデータをバス102に置く。バス102は、このデータをメインメモリ10
6に搬送し、ここからプロセッサ104は命令を取出して実行する。任意的に、
メインメモリ106が受けた命令を、プロセッサ104による実行前または実行
後いずれかに、記憶装置110に記憶させることができる。
ェイス118を含む。通信インターフェイス118によって、ローカルネットワ
ーク122に接続されたネットワークリンク120に結合する双方向データ通信
が行なわれる。例として、通信インターフェイス118は、対応する種類の電話
線へのデータ通信接続をもたらす統合デジタル通信サービス網(ISDN)カー
ドまたはモデムでもよい。別の例として、通信インターフェイス118は、互換
LANへのデータ通信接続をもたらすローカルエリアネットワーク(LAN)カ
ードでもよい。ワイヤレスリンクを実現することもできる。どのような実現化例
においても、通信インターフェイス118は、種々の種類の情報を表わすデジタ
ルデータストリームを搬送する電気信号、電磁信号または光信号を送受信する。
データ装置にデータを提供する。たとえば、ネットワークリンク120により、
ローカルネットワーク122を通して、インターネットサービスプロバイダ(I
SP)126が操作するホストコンピュータ124またはデータ機器への接続が
得られる。ISP126からは、現在は一般に「インターネット」128と呼ば
れているワールドワイドパケットデータ通信ネットワークを通して、データ通信
サービスが提供される。ローカルネットワーク122およびインターネット12
8はどちらも、デジタルデータストリームを搬送する電気信号、電磁信号または
光信号を利用する。種々のネットワークを通る信号、ネットワークリンク120
上の信号および通信インターフェイス118を通る信号は、コンピュータシステ
ム100へのおよびコンピュータシステムからのデジタルデータを運ぶ。これら
の信号は、情報を伝達する搬送波の形態の例である。
よび通信インターフェイス118を通して、プログラムコードを含むメッセージ
を送りデータを受けることができる。インターネットの例では、サーバ130が
、アプリケーションプログラムについて要求されたコードを、インターネット1
28、ISP126、ローカルネットワーク122および通信インターフェイス
118を通して、送信することがある。本発明に従い、このようにダウンロード
されたアプリケーションにより、本明細書で説明するようにメモリを管理する。
は、記憶装置110または他の不揮発性記憶装置に記憶しておいて後で実行して
もよい。この態様で、コンピュータシステム100は、搬送波の形でアプリケー
ションコードを得ることができる。
)の動的実行時環境に導入して活用し、オブジェクトへのすべてのリファレンス
内のオブジェクトの記憶特性に関する情報をコード化できるという認識から、生
まれたものである。リファレンスの一例としてマシンポインタがあり、マシンポ
インタは、コンピュータシステムのメモリ空間内のオブジェクトの場所を、実ア
ドレスまたは仮想アドレスの形式で含む。ポインタに埋込まれた情報は、高速ア
クセスマシンレジスタにあることが多いため、参照されたオブジェクトのヘッダ
を取込むためにさらなるメモリサイクルを要しなくても、非常に高速で取出すこ
とができる。
スに記憶される(ステップ200)。言い換えれば、こうしたオブジェクトの記
憶は、2Nバイト境界を起点とする仮想アドレスで始まる。たとえば、オブジェ
クトを、3ビット整列アドレスに、すなわち23=8バイト境界に記憶すること
ができる。したがって、このようなオブジェクトの、8進数で表現される正当な
開始アドレスは、02,447,630である。しかしながら、02,447,
634といったアドレスは、オブジェクトの記憶に有効な開始アドレスではない
。結果として、ポインタの3個の最下位ビットは、異なるオブジェクトを区別す
るのに役立たない。なぜなら、この3個の最下位ビットについては8個の値のう
ちひとつのみが正当なアドレスで、残り7個の値は他のどのオブジェクトも示さ
ないからである。この整列の制限のため、02,447,630から02,44
7,637までのアドレスを有するマシンポインタは効果的に同じオブジェクト
を指す。
ずれかを用いて、他の情報、すなわち参照されたオブジェクトの記憶特性をコー
ド化できる。ポインタの残余の部分は「ベースアドレス」と呼ばれ、仮想メモリ
内でのオブジェクトの場所を含む。したがって、ベースアドレスのビットより下
位の、ポインタにおけるビットのいずれかを用いて、オブジェクトの記憶特性を
示すことができる。例として、3ビット整列オブジェクトへのポインタの3個の
ビットすべてを用いて、このオブジェクトの記憶特性を示すことができる。別の
例として、ビット2および3を専らオブジェクトの記憶特性を示すのに用い、ビ
ット0を他の種類のインスタンス特性を示すのに用いることができる。
スからなる。実行時環境内のオブジェクトが8バイト境界に整列していれば、タ
グ304に対し、ポインタ300の3個の最下位ビットを利用でき、ベースアド
レス部302を構成する残り29ビットを用いて、参照されたオブジェクトの場
所を保持する。図3は3ビットのタグ304を有する32ビットのポインタ30
0の一例を示しているが、本発明はこのような具体的なサイズに限定されない。
ポインタのサイズおよびタグのサイズを実現化例ごとに変えてもよい。たとえば
、ポインタのタグ付けは、16ビット、36ビットおよび64ビットのポインタ
および1ビットから5ビットのタグに適している。
スが作成されると、オブジェクトの場所は、このリファレンスのベースアドレス
部に記憶される(ステップ202)。参照されたオブジェクトの所望の記憶特性
は、タグ部に記憶される(ステップ204)。オブジェクトを参照するポインタ
300に基づいてオブジェクトの記憶特性を取出すために、ポインタのデリファ
レンスを行なわなずに、ポインタ300のタグ部304がアクセスされる(ステ
ップ306)。タグは種々の方法で抽出できる。たとえば、ポインタをマスクし
最下位ビット304を抽出することにより、または、ポインタ300およびオブ
ジェクトの実際の開始アドレスのポインタ差を計算することにより、タグを抽出
できる。
ンタから抽出してからデリファレンスを行なう。たとえば、タグ付けされたポイ
ンタ02,447,634は、デリファレンスのためにベースアドレス02,4
47,630に変換される。例として、ベースアドレスを、タグをマスクオフす
ることによって抽出できる。Cプログラミング言語では、タグを、式(ptr&
−07)でマスクオフできる。
ISP Machine(登録商標)実現化例とは対照的に、本発明のある実施例では、強
く型付けされた言語たとえばJAVA(R)(登録商標)のための動的実行時環境にお
ける参照タグ付けを用いて、オブジェクトの記憶特性に関する非種類情報をコー
ド化する。強く型付けされた言語のための実行時環境では、ポインタに種類情報
を記憶する必要はない。なぜなら、コンパイラは既に、たとえば一般的にはメッ
セージのディスパッチといったオブジェクトの種類を知っていることが不可欠で
ある状況における、関連の種類情報を認識しているからである。
に、オブジェクトがどのようにしてメモリに記憶されているか、および、オブジ
ェクトが実行時環境が管理するメモリにどれだけの期間記憶されているかに関す
る。ポインタタグに、3種類の記憶特性すなわち生存期間、フォーマットおよび
連続性をコード化しておくことが特に有利なことがわかっている。加えて、これ
らの記憶特性を組合わせたものをポインタタグにコード化することができる。
す。生存期間は、絶対的に時間で表わす、または、別のオブジェクトまたはイベ
ントに関する相対的な時間で表わすことができる。例として、「最近」割当てら
れたオブジェクトを0でタグ付けし、「より古い」オブジェクトを1でタグ付け
することができる。より正確には、世代別ごみ回収器では、タグ0は新しい空間
のオブジェクトと関連づけられ、タグ1は古い空間のオブジェクトと関連づけら
れる。この場合、より古いオブジェクトを、ごみ回収のために新しい空間が取除
かれた4つの出現よりも長く存続するものとして定義できる。別の例として、生
存期間は、オブジェクトが現在のSQLコール中にセッションにおける過去のコ
ールに割当てられたのか、または、セッション間を通して存続しているのかどう
かを示すことができる。
。フォーマットは種類とは異なり、種類は論理概念であるのに対しフォーマット
は物理概念である。したがって、同じ種類の2つのオブジェクトが異なるフォー
マットすなわち内的表現を有することが可能である。あるオブジェクトのフォー
マットの一例は、別のオブジェクトへのリファレンスの内的表現を含む。このリ
ファレンスは、あるフォーマットでは固有のマシンポインタとして、および、別
のフォーマットでは数値リファレンスとして、実現できる。数値リファレンスは
、オブジェクトの場所を、メモリの割当領域の空間またはオブジェクトそのもの
の起点といったように、暗黙のベースポインタからの変位またはオフセットとし
て説明する整数である。数値リファレンスの内的表現は整数であるため、数値リ
ファレンスは、固有マシンポインタよりも移動性が高く潜在的に再配置しやすい
。実際、数値リファレンスそのものをタグ付けして、数値リファレンスが参照す
るオブジェクトの連続性といった記憶特性を記録できる。
たメモリ場所に記憶されているのか連続していないページに記憶されているのか
を示す。この記憶特性は、メモリが通常非連続の複数ページとしてしか得られな
い実行時環境では特に有利なことがわかっている。1つのページは、コンピュー
タシステムの(仮想)アドレス空間の固定長の連続領域である。ある実施例では
、ページサイズは4096(212)であるが、このページサイズは他の実施例で
は28(256)から216(65536)バイトといったように幅を持たせるこ
とができる。1つのオブジェクトは、複数ページに記憶されている場合、特に、
複数ページのうち1つがこれらページの別のページに連続していない場合、非連
続であるまたは「ページに分かれる」と言われる。ページに分けたオブジェクト
のフィールド、インスタンス変数または「スロット」のアドレス計算は、ページ
テーブルを通したインデックスにより非常に複雑であるが、連続したオブジェク
トについてはもっと簡単である。したがって、リファレンスタグにおいてオブジ
ェクトの連続性をコード化することにより、適切なマシン命令をディスパッチし
てページに分かれたオブジェクトのスロットにアクセスできる。
またはオブジェクトの連続性およびフォーマット(別のフォーマット)といった
ように、記憶特性の組合せをコード化できる。表1はこのような特性に対するタ
グ値に可能な1つの割当を列挙している。
ード化されているため、オブジェクトの記憶特性に生じた変化をオブジェクトへ
のリファレンスすべてに反映させなければならないことになる。しかしながら、
この制限は、記憶特性のタグ付けにおいては問題ではない。例として、いくつか
の特性は、フォーマットまたは連続性といったように、本質的に永久的である。
このようなポインタタグの変更はもしあったとしてもごく稀にしか起こらない。
別の例として、世代別ごみ回収器により、新しい空間のオブジェクトが古い空間
に入れられた場合、このオブジェクトに対するすべてのリファレンスは、どんな
場合でも必ずこの回収器によって再配置されねばならない。また、この再配置の
一部として、生存期間がオブジェクトの永久特性でないとしても、タグを更新で
きる。
を実現できるようにする方法を説明するフローチャートを示す。世代別ごみ回収
器内で、オブジェクトは新しい空間に割当てられ(ステップ400)、オブジェ
クトのいくつかはその生存期間に基づいて古い空間に移される(ステップ402
)。覚書表と呼ばれるデータ構造が、書込バッファに維持されている。すなわち
、ターゲットオブジェクトに対するターゲットポインタの、ソースポインタが参
照するソースオブジェクト内のフィールドへの割当てに応じて、覚書表は、条件
付きで更新される(ステップ404)。より具体的には、覚書表は、ターゲット
オブジェクトが新しい空間にありソースオブジェクトが古い空間にあると判断さ
れた場合に更新される。
て行なう方法を説明している。ステップ410で、ターゲットタグが、マスキン
ングまたはポインタ差の計算により、ターゲットポインタから抽出され、ステッ
プ412で、ソースタグがソースポインタから抽出される。これらの動作は典型
的に、多くのコンピュータアーキテクチャではレジスタごとの動作であり、メモ
リポインタのデリファレンスを含まない。結果として、一般にはメモリポインタ
のデリファレンスに関連するオーバヘッド、たとえば、システムバス上にメモリ
読出サイクルを発生させることまたはメモリフェッチの実行は回避される。した
がって、ポインタタグは、キャッシュミスまたは仮想メモリページの誤りを引き
起こす可能性のある、従来の方策の損失を避ける役割を果たす。特に、レジスタ
動作のみを用いることによって、従来のオブジェクトヘッダ方法に比べて、性能
が大幅に向上する。
が、新しい空間のターゲットオブジェクトを参照する古い空間のソースオブジェ
クトとなっているかどうか判断する。この検査が真であれば、覚書表が更新され
る(ステップ416)。ある実施例では、この検査を簡単に、ソースタグを古い
空間の値と比較し、ターゲットタグを新しい空間の値と比較することによって行
なうことができる。たとえば、Cプログラミング言語では、式((source & 07) =
= OLDSPACE && (target & 07) == NEWSPACE)で、この検査を行なうことができる
。式中、sourceはソースオブジェクトへのポインタであり、targetはターゲット
オブジェクトへのポインタであり、OLDSPACEおよびNEWSPACEは所定の値たとえば
それぞれ1および0に定められた明白な定数である。
によってより効率的に行なうことができる。たとえば、1という古い空間のタグ
および0という新しい空間のタグを用いれば、この判断を、(source & 07) > (t
arget & 07)という、不一致に関する比較によって行なうことができる。さらな
るタグの値を用いると、たとえば、ポインタフォーマットオブジェクトへの割当
を含むすべての書込動作が数値リファレンスフォーマットオブジェクトへの書込
動作を含むものと別にされている場合、この比較をなおも世代別ごみ回収器に用
いることができる。この状況は、世代別ごみ回収器を呼出期間メモリにおけるポ
インタフォーマット化オブジェクトに対してのみ用い、数値リファレンスフォー
マット化オブジェクトがセッション期間メモリに割当てられている場合に生じ得
る。
づけて説明してきたが、本発明は、上記開示の実施例に限定されるのではなく、
前掲のクレームの精神および範囲に含まれる種々の変形例および等価例をカバー
することが意図されていることが、理解されるであろう。
ロック図である。
ャートである。
ある。
Claims (40)
- 【請求項1】 オブジェクトの記憶特性についての情報を管理する方法であ
って、コンピュータによって実行される オブジェクトをメモリに記憶するステップと、 リファレンスのベースアドレス部において、メモリ内のオブジェクトの位置を
記憶することによってオブジェクトへのリファレンスを作成するステップと、 リファレンスのタグ部において、オブジェクトの記憶特性についての情報をス
トアするステップとを含み、リファレンスのタグ部はアドレス部のビットより下
位の、リファレンスの1つ以上のビットを含む、方法。 - 【請求項2】 オブジェクトをメモリに記憶するステップは、Nビットの整
列アドレスにおいてオブジェクトをメモリに記憶するステップを含む、請求項1
に記載の方法。 - 【請求項3】 タグ部は、リファレンスのN個の最下位ビットを含む、請求
項2に記載の方法。 - 【請求項4】 オブジェクトへのリファレンスのタグ部をアクセスすること
により、オブジェクトの記憶特性についての情報を取り出すステップをさらに含
む、請求項2に記載の方法。 - 【請求項5】 リファレンスのタグ部において、オブジェクトの記憶特性に
ついての情報を記憶するステップは、タグ部において、オブジェクトの生存期間
についての情報を記憶するステップを含む、請求項2に記載の方法。 - 【請求項6】 タグ部において、オブジェクトの生存期間についての情報を
記憶するステップは、タグ部において、オブジェクトが少なくとも所定の数のご
み回収イベントだけ生存したかどうかを示す情報を記憶するステップを含む、請
求項2に記載の方法。 - 【請求項7】 リファレンスのタグ部において、オブジェクトの記憶特性に
ついての情報を記憶するステップは、タグ部において、オブジェクトの記憶フォ
ーマットについての情報を記憶するステップを含む、請求項2に記載の方法。 - 【請求項8】 オブジェクトはリファレンスを含み、さらに タグ部において、オブジェクトの記憶フォーマットについての情報を記憶する
ステップは、タグ部において、オブジェクト内に含まれるリファレンスのフォー
マットについての情報を記憶するステップを含む、請求項7に記載の方法。 - 【請求項9】 タグ部において、オブジェクト内に含まれるリファレンスの
フォーマットについての情報を記憶するステップは、タグ部において、含まれる
リファレンスはマシンポインタとして、または数値リファレンスとして記憶され
ているかどうかを示す情報を記憶するステップを含む、請求項8に記載の方法。 - 【請求項10】 リファレンスのタグ部において、オブジェクトの記憶特性
についての情報を記憶するステップは、タグ部において、オブジェクの連続性に
ついての情報を記憶するステップを含む、請求項2に記載の方法。 - 【請求項11】 タグ部において、オブジェクトの連続性についての情報を
記憶するステップは、タグ部において、オブジェクトが複数のページに記憶され
ているかどうかを示す情報を記憶するステップを含む、請求項10に記載の方法
。 - 【請求項12】 タグ部において、オブジェクトが複数のページに記憶され
ているかどうかを示す情報を記憶するステップは、タグ部において、オブジェク
トは他のページに連続しない少なくとも1つのページに記憶されているかどうか
を示す情報を記憶するステップを含む、請求項11に記載の方法。 - 【請求項13】 リファレンスのタグ部において、オブジェクトの記憶特性
についての情報を記憶するステップは、タグ部において、(a)オブジェクトの
生存期間およびオブジェクトに含まれるリファレンスは第1のフォーマットで記
憶されていることの両方を示す情報、または(b)オブジェクトの連続性および
オブジェクトに含まれるリファレンスは第1のフォーマット以外の第2のフォー
マットで記憶されていることの両方を示す情報のどちらかを記憶するステップを
含む、請求項2に記載の方法。 - 【請求項14】 Nはちょうど3である、請求項1に記載の方法。
- 【請求項15】 リファレンスを作成するステップは、マシンポインタを初
期化するステップを含む、請求項1に記載の方法。 - 【請求項16】 リファレンスを作成するステップは、数値リファレンスを
初期化するステップを含む、請求項1に記載の方法。 - 【請求項17】 複数のオブジェクトのメモリを管理する方法であって、コ
ンピュータによって実行される オブジェクトを第1のメモリ領域に割当てるステップと、 オブジェクトの一部についてのそれぞれの生存期間に基づいて、オブジェクト
の一部を第1のメモリ領域から第2のメモリ領域に移動させるステップと、 第2のメモリ領域におけるどの第2のオブジェクトが第1のメモリ領域の第1
のオブジェクトを参照するかについてのデータ構造を維持するステップとを含み
、この維持するステップは、 メモリポインタをデリファレンスすることなく、第1のオブジェクトへの第1
のリファレンス内に含まれる第1の情報および第2のオブジェクトへの第2のリ
ファレンス内に含まれる第2の情報に基づき、第1のオブジェクトが第1のメモ
リ領域に割当てられているかどうかおよび第2のオブジェクトが第2のメモリ領
域に割当てられているかどうかを定めることにより行なわれ、 第1のメモリ領域および第2のメモリ領域のどちらかはそれぞれ複数の不連続
ページを含む、方法。 - 【請求項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】 第1の1つ以上のビットおよび第2の1つ以上のビットに
基づいて第1のオブジェクトが第1のメモリ領域に割当てられているかどうかお
よび第2のオブジェクトが第2のメモリ領域に割当てられているかどうかを定め
るステップは、所定の不一致について第1の1つ以上のビットおよび第2の1つ
以上のビットを比較するステップを含む、請求項18に記載の方法。 - 【請求項20】 第1のリファレンスの第1の1つ以上のビットを抽出する
ステップは、第1のリファレンスの1つ以上の下位ビットを抽出するステップを
含み、さらに 第1のリファレンスの第2の1つ以上のビットを抽出するステップは、第2の
リファレンスの1つ以上の下位ビットを抽出するステップを含む、請求項18に
記載の方法。 - 【請求項21】 オブジェクトの記憶特性についての情報を管理するための
命令を含む、コンピュータによって読取可能な媒体であって、前記命令は実行さ
れると1つ以上のプロセッサに、 オブジェクトをメモリに記憶するステップと、 リファレンスのベースアドレス部において、メモリ内のオブジェクトの位置を
記憶することによりオブジェクトへのリファレンスを作成するステップと、 リファレンスのタグ部において、オブジェクトの記憶特性についての情報を記
憶するステップとを実行させるようになっており、リファレンスのタグ部はアド
レス部のビットより下位である、リファレンスの1つ以上のビットを含む、コン
ピュータによって読取可能な媒体。 - 【請求項22】 オブジェクトをメモリに記憶するステップは、Nビットの
整列アドレスにおいてオブジェクトをメモリに記憶するステップを含む、請求項
21に記載のコンピュータによって読取可能な媒体。 - 【請求項23】 タグ部はリファレンスのN個の最下位ビットを含む、請求
項22に記載のコンピュータによって読取可能な媒体。 - 【請求項24】 命令は、実行されると、1つ以上のプロセッサに、オブジ
ェクトへのリファレンスのタグ部をアクセスすることにより、オブジェクトの記
憶特性についての情報を取り出すステップを実行させるようになっている、請求
項22に記載のコンピュータによって読取可能な媒体。 - 【請求項25】 リファレンスのタグ部において、オブジェクトの記憶特性
についての情報を記憶するステップは、タグ部において、オブジェクトの生存期
間についての情報を記憶するステップを含む、請求項22に記載のコンピュータ
によって読取可能な媒体。 - 【請求項26】 タグ部において、オブジェクトの生存期間についての情報
を記憶するステップは、タグ部において、オブジェクトが少なくとも所定の数の
ごみ回収イベントだけ生存したかどうかを示す情報を記憶するステップを含む、
請求項22に記載の方法コンピュータによって読取可能な媒体。 - 【請求項27】 リファレンスのタグ部において、オブジェクトの記憶特性
についての情報を記憶するステップは、タグ部において、オブジェクトの記憶フ
ォーマットについての情報を記憶するステップを含む、請求項22に記載のコン
ピュータによって読取可能な媒体。 - 【請求項28】 オブジェクトはリファレンスを含み、さらに タグ部において、オブジェクトの記憶フォーマットについての情報を記憶する
ステップは、タグ部において、オブジェクト内に含まれるリファレンスのフォー
マットについての情報を記憶するステップを含む、請求項27に記載のコンピュ
ータによって読取可能な媒体。 - 【請求項29】 タグ部において、オブジェクト内に含まれるリファレンス
のフォーマットについての情報を記憶するステップは、タグ部において、含まれ
るリファレンスはマシンポインタとして、または数値リファレンスとして記憶さ
れているかどうかを示す情報を記憶するステップを含む、請求項28に記載のコ
ンピュータによって読取可能な媒体。 - 【請求項30】 リファレンスのタグ部において、オブジェクトの記憶特性
についての情報を記憶するステップは、タグ部において、オブジェクの連続性に
ついての情報を記憶するステップを含む、請求項22に記載のコンピュータによ
って読取可能な媒体。 - 【請求項31】 タグ部において、オブジェクトの連続性についての情報を
記憶するステップは、タグ部において、オブジェクトが複数のページに記憶され
ているかどうかを示す情報を記憶するステップを含む、請求項30に記載のコン
ピュータによって読取可能な媒体。 - 【請求項32】 タグ部において、オブジェクトが複数のページに記憶され
ているかどうかを示す情報を記憶するステップは、タグ部において、オブジェク
トは他のページに連続しない少なくとも1つのページに記憶されているかどうか
を示す情報を記憶するステップを含む、請求項31に記載のコンピュータによっ
て読取可能な媒体。 - 【請求項33】 リファレンスのタグ部において、オブジェクトの記憶特性
についての情報を記憶するステップは、タグ部において、(a)オブジェクトの
生存期間およびオブジェクトに含まれるリファレンスは第1のフォーマットで記
憶されていることの両方を示す情報、または(b)オブジェクトの連続性および
オブジェクトに含まれるリファレンスは第1のフォーマット以外の第2のフォー
マットで記憶されていることの両方を示す情報のどちらかを記憶するステップを
含む、請求項22に記載のコンピュータによって読取可能な媒体。 - 【請求項34】 Nはちょうど3である、請求項21に記載のコンピュータ
によって読取可能な媒体。 - 【請求項35】 リファレンスを作成するステップは、マシンポインタを初
期化するステップを含む、請求項21に記載のコンピュータによって読取可能な
媒体。 - 【請求項36】 リファレンスを作成するステップは、数値リファレンスを
初期化するステップを含む、請求項21に記載のコンピュータによって読取可能
な媒体。 - 【請求項37】 複数のオブジェクトのメモリを管理するための命令を含む
、コンピュータによって読取可能な媒体であって、前記命令は実行されると、1
つ以上のプロセッサに オブジェクトを第1のメモリ領域に割当てるステップと、 オブジェクトの一部についてのそれぞれの生存期間に基づいて、オブジェクト
の一部を第1のメモリ領域から第2のメモリ領域に移動させるステップと、 第2のメモリ領域におけるどの第2のオブジェクトが第1のメモリ領域の第1
のオブジェクトを参照するかについてのデータ構造を維持するステップとを実行
させるようになっており、この維持するステップは、 メモリポインタをデリファレンスすることなく、第1のオブジェクトへの第1
のリファレンス内に含まれる第1の情報および第2のオブジェクトへの第2のリ
ファレンス内に含まれる第2の情報に基づき、第1のオブジェクトが第1のメモ
リ領域に割当てられているかどうかおよび第2のオブジェクトが第2のメモリ領
域に割当てられているかどうかを定めることにより行なわれ、 第1のメモリ領域および第2のメモリ領域のどちらかはそれぞれ複数の不連続
ページを含む、コンピュータによって読取可能な媒体。 - 【請求項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】 第1の1つ以上のビットおよび第2の1つ以上のビットに
基づいて第1のオブジェクトが第1のメモリ領域に割当てられているかどうかお
よび第2のオブジェクトが第2のメモリ領域に割当てられているかどうかを定め
るステップは、所定の不一致について第1の1つ以上のビットおよび第2の1つ
以上のビットを比較するステップを含む、請求項38に記載のコンピュータによ
って読取可能な媒体。 - 【請求項40】 第1のリファレンスの第1の1つ以上のビットを抽出する
ステップは、第1のリファレンスの1つ以上の下位ビットを抽出するステップを
含み、さらに 第1のリファレンスの第2の1つ以上のビットを抽出するステップは、第2の
リファレンスの1つ以上の下位ビットを抽出するステップを含む、請求項38に
記載のコンピュータによって読取可能な媒体。
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)
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)
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 |
-
1999
- 1999-02-11 US US09/248,295 patent/US6457019B1/en not_active Expired - Lifetime
-
2000
- 2000-02-11 JP JP2000598926A patent/JP3908909B2/ja not_active Expired - Lifetime
- 2000-02-11 CA CA002362463A patent/CA2362463C/en not_active Expired - Lifetime
- 2000-02-11 AT AT00910124T patent/ATE239938T1/de not_active IP Right Cessation
- 2000-02-11 WO PCT/US2000/003411 patent/WO2000048074A1/en active IP Right Grant
- 2000-02-11 AU AU32267/00A patent/AU761969B2/en not_active Expired
- 2000-02-11 EP EP00910124A patent/EP1153343B1/en not_active Expired - Lifetime
- 2000-02-11 DE DE60002559T patent/DE60002559T2/de not_active Expired - Lifetime
-
2002
- 2002-03-22 US US10/102,844 patent/US6678697B2/en not_active Expired - Lifetime
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 |