JP3908909B2 - 実行時環境でのメモリ管理 - Google Patents
実行時環境でのメモリ管理 Download PDFInfo
- Publication number
- JP3908909B2 JP3908909B2 JP2000598926A JP2000598926A JP3908909B2 JP 3908909 B2 JP3908909 B2 JP 3908909B2 JP 2000598926 A JP2000598926 A JP 2000598926A JP 2000598926 A JP2000598926 A JP 2000598926A JP 3908909 B2 JP3908909 B2 JP 3908909B2
- Authority
- JP
- Japan
- Prior art keywords
- memory
- bits
- storing
- information
- tag
- 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
Links
Images
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)
- Communication Control (AREA)
- Memory System (AREA)
- Storage Device Security (AREA)
- Preparation Of Compounds By Using Micro-Organisms (AREA)
Description
【関連出願】
本出願は以下の出願に関連している。
【0002】
Harlan Sextonらによって同日に出願された、「実行時環境内におけるマシンと独立したメモリ管理システム」と題される、米国特許出願第09/248,291号(書類番号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)といったディスプレイ112にバス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が実行する命令を与えることに関わる何らかの媒体のことを指す。このような媒体には、不揮発性媒体、揮発性媒体および伝送媒体を含め、数多くの形態があるが、これらに限定される訳ではない。不揮発性媒体は例として記憶装置110などの光ディスクまたは磁気ディスクを含む。揮発性媒体はメインメモリ106などの動的メモリを含む。伝送媒体は、バス102を含むワイヤを含め、同軸ケーブル、銅線および光ファイバを含む。伝送媒体は、無線周波数(RF)および赤外(IR)データ通信中に発生する音波または光波の形態も取り得る。例として、コンピュータ読取可能な媒体の一般的な形態は、フロッピー(R)ディスク、フレキシブルディスク、ハードディスク、磁気テープ、その他の磁気媒体、CD−ROM、DVD、その他の光媒体、パンチカード、紙テープ、その他孔パターンを有する物理媒体、RAM、PROM、EPROM、FLASH−EPROM、その他メモリチップまたはカートリッジ、以下で説明する搬送波、またはこれら以外のコンピュータが読取可能な媒体を含む。
【0024】
種々の形態のコンピュータ読取可能な媒体を、1以上の命令の1以上のシーケンスを実行のためにプロセッサ104に搬送するのに用いることができる。たとえば、初めは命令を遠隔コンピュータの磁気ディスクに置いてもよい。遠隔コンピュータは、命令を、自身の動的記憶装置にロードし、モデムを用いて電話線で送ることができる。コンピュータシステム100のローカルモデムは、電話線のデータを受け、赤外線送信器を用いてこのデータを赤外線信号に変換できる。バス102に結合された赤外線検出器は、赤外線信号で搬送されるデータを受け、このデータをバス102に置く。バス102は、このデータをメインメモリ106に搬送し、ここからプロセッサ104は命令を取出して実行する。任意的に、メインメモリ106が受けた命令を、プロセッサ104による実行前または実行後いずれかに、記憶装置110に記憶させることができる。
【0025】
コンピュータシステム100はまた、バス102に結合された通信インターフェイス118を含む。通信インターフェイス118によって、ローカルネットワーク122に接続されたネットワークリンク120に結合する双方向データ通信が行なわれる。例として、通信インターフェイス118は、対応する種類の電話線へのデータ通信接続をもたらす統合デジタル通信サービス網(ISDN)カードまたはモデムでもよい。別の例として、通信インターフェイス118は、互換LANへのデータ通信接続をもたらすローカルエリアネットワーク(LAN)カードでもよい。ワイヤレスリンクを実現することもできる。どのような実現化例においても、通信インターフェイス118は、種々の種類の情報を表わすデジタルデータストリームを搬送する電気信号、電磁信号または光信号を送受信する。
【0026】
典型的に、ネットワークリンク120は、1以上のネットワークを通して他のデータ装置にデータを提供する。たとえば、ネットワークリンク120により、ローカルネットワーク122を通して、インターネットサービスプロバイダ(ISP)126が操作するホストコンピュータ124またはデータ機器への接続が得られる。ISP126からは、現在は一般に「インターネット」128と呼ばれているワールドワイドパケットデータ通信ネットワークを通して、データ通信サービスが提供される。ローカルネットワーク122およびインターネット128はどちらも、デジタルデータストリームを搬送する電気信号、電磁信号または光信号を利用する。種々のネットワークを通る信号、ネットワークリンク120上の信号および通信インターフェイス118を通る信号は、コンピュータシステム100へのおよびコンピュータシステムからのデジタルデータを運ぶ。これらの信号は、情報を伝達する搬送波の形態の例である。
【0027】
コンピュータシステム100は、ネットワーク、ネットワークリンク120および通信インターフェイス118を通して、プログラムコードを含むメッセージを送りデータを受けることができる。インターネットの例では、サーバ130が、アプリケーションプログラムについて要求されたコードを、インターネット128、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,447,637までのアドレスを有するマシンポインタは効果的に同じオブジェクトを指す。
【0031】
したがって、Nビット整列オブジェクトへのポインタのN個の下位ビットのいずれかを用いて、他の情報、すなわち参照されたオブジェクトの記憶特性をコード化できる。ポインタの残余の部分は「ベースアドレス」と呼ばれ、仮想メモリ内でのオブジェクトの場所を含む。したがって、ベースアドレスのビットより下位の、ポインタにおけるビットのいずれかを用いて、オブジェクトの記憶特性を示すことができる。例として、3ビット整列オブジェクトへのポインタの3個のビットすべてを用いて、このオブジェクトの記憶特性を示すことができる。別の例として、ビット2および3を専らオブジェクトの記憶特性を示すのに用い、ビット0を他の種類のインスタンス特性を示すのに用いることができる。
【0032】
図3に示したある実現化例では、ポインタ300は、32ビットの仮想アドレスからなる。実行時環境内のオブジェクトが8バイト境界に整列していれば、タグ304に対し、ポインタ300の3個の最下位ビットを利用でき、ベースアドレス部302を構成する残り29ビットを用いて、参照されたオブジェクトの場所を保持する。図3は3ビットのタグ304を有する32ビットのポインタ300の一例を示しているが、本発明はこのような具体的なサイズに限定されない。ポインタのサイズおよびタグのサイズを実現化例ごとに変えてもよい。たとえば、ポインタのタグ付けは、16ビット、36ビットおよび64ビットのポインタおよび1ビットから5ビットのタグに適している。
【0033】
再び図2を参照して、オブジェクトへの、たとえばポインタというリファレンスが作成されると、オブジェクトの場所は、このリファレンスのベースアドレス部に記憶される(ステップ202)。参照されたオブジェクトの所望の記憶特性は、タグ部に記憶される(ステップ204)。オブジェクトを参照するポインタ300に基づいてオブジェクトの記憶特性を取出すために、ポインタのデリファレンスを行なわなずに、ポインタ300のタグ部304がアクセスされる(ステップ306)。タグは種々の方法で抽出できる。たとえば、ポインタをマスクし最下位ビット304を抽出することにより、または、ポインタ300およびオブジェクトの実際の開始アドレスのポインタ差を計算することにより、タグを抽出できる。
【0034】
タグ付けされたポインタのデリファレンスのためには、ベースアドレスをポインタから抽出してからデリファレンスを行なう。たとえば、タグ付けされたポインタ02,447,634は、デリファレンスのためにベースアドレス02,447,630に変換される。例として、ベースアドレスを、タグをマスクオフすることによって抽出できる。Cプログラミング言語では、タグを、式(ptr&−07)でマスクオフできる。
【0035】
記憶特性
ポインタタグにおいて種類情報をコード化するSmalltalk(登録商標)およびLISP 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) > (target & 07)という、不一致に関する比較によって行なうことができる。さらなるタグの値を用いると、たとえば、ポインタフォーマットオブジェクトへの割当を含むすべての書込動作が数値リファレンスフォーマットオブジェクトへの書込動作を含むものと別にされている場合、この比較をなおも世代別ごみ回収器に用いることができる。この状況は、世代別ごみ回収器を呼出期間メモリにおけるポインタフォーマット化オブジェクトに対してのみ用い、数値リファレンスフォーマット化オブジェクトがセッション期間メモリに割当てられている場合に生じ得る。
【0047】
本発明について現在最も実用的かつ好ましい実施例だと考えられるものと関連づけて説明してきたが、本発明は、上記開示の実施例に限定されるのではなく、前掲のクレームの精神および範囲に含まれる種々の変形例および等価例をカバーすることが意図されていることが、理解されるであろう。
【図面の簡単な説明】
【図1】 実施例を実現するのに使用できるコンピュータシステムを示すブロック図である。
【図2】 タグ付きポインタを作成および使用するステップを示すフローチャートである。
【図3】 タグ付きポインタのある実現化例を概略的に示す。
【図4】 覚書表を書込バリアに維持するステップを示すフローチャートである。
Claims (13)
- オブジェクトの記憶特性についての情報を管理する方法であって、コンピュータによって実行される
オブジェクトをメモリに記憶するステップと、
リファレンスのベースアドレス部にメモリ内のオブジェクトの位置を記憶することによって、オブジェクトへのリファレンスを作成するステップと、
リファレンスのタグ部に、オブジェクトの記憶特性についての情報をストアするステップとを含み、
前記オブジェクトの記憶特性についての情報は、
(a) 前記オブジェクトの生存期間についての情報、
(b) 前記オブジェクトの中に含まれる、リファレンスのフォーマットについての情報、および
(c) 前記オブジェクトの連続性についての情報
の少なくとも1つを含み、
リファレンスのタグ部はアドレス部のビットより下位の、リファレンスの1つ以上のビットを含む、方法。 - 前記オブジェクトをメモリに記憶するステップは、Nビットの整列アドレスにオブジェクトを記憶するステップを含む、請求項1に記載の方法。
- タグ部は、リファレンスのN個の最下位ビットである、請求項2に記載の方法。
- タグ部に、オブジェクトの生存期間を記憶するために、タグ部に、オブジェクトが少なくとも所定の数のごみ回収イベントだけ生存したかどうかを示す情報を記憶するステップを含む、請求項2に記載の方法。
- オブジェクトは、第2のオブジェクトへの内的リファレンスを含み、さらに
タグ部に、オブジェクト内に含まれる内的リファレンスのフォーマットについての情報を記憶するステップを含む、請求項1に記載の方法。 - タグ部に、オブジェクト内に含まれる内的リファレンスのフォーマットについての情報を記憶するステップは、タグ部に、含まれるリファレンスはマシンポインタとして、または数値リファレンスとして記憶されているかどうかを示す情報を記憶するステップを含む、請求項5に記載の方法。
- タグ部に、オブジェクトが複数のページに記憶されているかどうかを示す情報を記憶するステップを含む、請求項1に記載の方法。
- タグ部に、オブジェクトが複数のページに記憶されているかどうかを示す情報を記憶するステップは、タグ部に、オブジェクトは他のページに連続しない少なくとも1つのページに記憶されているかどうかを示す情報を記憶するステップを含む、請求項7に記載の方法。
- リファレンスのタグ部に、オブジェクトの記憶特性についての情報を記憶するステップは、タグ部に、(a)オブジェクトの生存期間およびオブジェクトに含まれるリファレンスは第1のフォーマットで記憶されていることの両方を示す情報、または(b)オブジェクトの連続性およびオブジェクトに含まれるリファレンスは第1のフォーマット以外の第2のフォーマットで記憶されていることの両方を示す情報のどちらかを記憶するステップを含む、請求項1に記載の方法。
- 複数のオブジェクトのメモリを管理する方法であって、コンピュータによって実行される
オブジェクトを第1のメモリ領域に割当てるステップと、
前記複数のオブジェクトのうちの一部のオブジェクトについてのそれぞれが存続している期間を示す生存期間に基づいて、前記複数のオブジェクトのうちの一部のオブジェクトを第1のメモリ領域から第2のメモリ領域に移動させるステップと、
第2のメモリ領域におけるどの第2のオブジェクトが第1のメモリ領域の第1のオブジェクトを参照するかについてのメモリ内のオブジェクトの参照関係を記録するためのデータ構造を記憶するステップとを含み、この記憶するステップは、
メモリポインタをデリファレンスすることなく、第1のオブジェクトへの第1のリファレンス内に含まれる第1の情報および第2のオブジェクトへの第2のリファレンス内に含まれる第2の情報に基づき、第1のオブジェクトが第1のメモリ領域に割当てられているかどうかおよび第2のオブジェクトが第2のメモリ領域に割当てられているかどうかを決定することにより行なわれ、
第1のメモリ領域および第2のメモリ領域のどちらかはそれぞれ複数の不連続ページを含む、方法。 - メモリポインタをデリファレンスすることなく、第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のメモリ領域に割当てられているかどうかを決定するステップを含む、請求項10に記載の方法。 - 第1の1つ以上のビットおよび第2の1つ以上のビットに基づいて第1のオブジェクトが第1のメモリ領域に割当てられているかどうかおよび第2のオブジェクトが第2のメモリ領域に割当てられているかどうかを決定するステップは、所定の不一致について第1の1つ以上のビットおよび第2の1つ以上のビットを比較するステップを含む、請求項11に記載の方法。
- 第1のリファレンスの第1の1つ以上のビットを抽出するステップは、第1のリファレンスの1つ以上の下位ビットを抽出するステップを含み、さらに
第1のリファレンスの第2の1つ以上のビットを抽出するステップは、第2のリファレンスの1つ以上の下位ビットを抽出するステップを含む、請求項11に記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/248,295 | 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 |
---|---|
JP2002536761A JP2002536761A (ja) | 2002-10-29 |
JP3908909B2 true 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 |
US7552302B1 (en) * | 2004-09-14 | 2009-06-23 | Azul Systems, Inc. | Ordering operation |
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 |
EP2898413B1 (en) * | 2012-09-24 | 2016-11-23 | 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 |
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 |
US5920876A (en) | 1997-04-23 | 1999-07-06 | Sun Microsystems, Inc. | Performing exact garbage collection using bitmaps that identify pointer values within objects |
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 DE DE60002559T patent/DE60002559T2/de 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 CA CA002362463A patent/CA2362463C/en not_active Expired - Lifetime
- 2000-02-11 EP EP00910124A patent/EP1153343B1/en not_active Expired - Lifetime
- 2000-02-11 AU AU32267/00A patent/AU761969B2/en not_active Expired
- 2000-02-11 JP JP2000598926A patent/JP3908909B2/ja 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 |
---|---|
US6678697B2 (en) | 2004-01-13 |
DE60002559T2 (de) | 2004-04-08 |
EP1153343B1 (en) | 2003-05-07 |
DE60002559D1 (de) | 2003-06-12 |
EP1153343A1 (en) | 2001-11-14 |
AU3226700A (en) | 2000-08-29 |
JP2002536761A (ja) | 2002-10-29 |
CA2362463A1 (en) | 2000-08-17 |
US20020194191A1 (en) | 2002-12-19 |
ATE239938T1 (de) | 2003-05-15 |
WO2000048074A1 (en) | 2000-08-17 |
AU761969B2 (en) | 2003-06-12 |
CA2362463C (en) | 2003-10-28 |
US6457019B1 (en) | 2002-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3908909B2 (ja) | 実行時環境でのメモリ管理 | |
US6931423B2 (en) | Write-barrier maintenance in a garbage collector | |
US6529919B1 (en) | Incremental class unloading in a train-algorithm-based garbage collector | |
US7310718B1 (en) | Method for enabling comprehensive profiling of garbage-collected memory systems | |
US6499095B1 (en) | Machine-independent memory management system within a run-time environment | |
US7631024B2 (en) | Method and apparatus for facilitating mark-sweep garbage collection with reference counting | |
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 | |
US6434576B1 (en) | Popular-object handling in a train-algorithm-based garbage collector | |
US6279012B1 (en) | Reducing the memory footprint of a session duration semispace | |
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 | |
US7412580B1 (en) | Concurrent incremental garbage collector with a card table summarizing modified reference locations | |
US6434685B1 (en) | Paged memory management system within a run-time environment | |
EP0993634A1 (en) | Method and apparatus for managing hashed objects | |
US6999979B2 (en) | Efficient encoding of references into a collection set | |
US20050235120A1 (en) | System and method for performing garbage collection on a large heap | |
US7155467B1 (en) | Adaptive type-partitioned garbage collection | |
US9158682B2 (en) | Cache memory garbage collector | |
EP3987402A1 (en) | Arena-based memory management | |
US20050268053A1 (en) | Architecture for a scalable heap analysis tool | |
US6996694B1 (en) | Basing computer memory allocation for aggregate data types on data separate from a type definition | |
US6760825B1 (en) | Memory management using migration for a run-time environment | |
US7039664B2 (en) | Combining entries in a card object table |
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 |