JP2001504970A - 局所メモリを再利用するデータ処理装置 - Google Patents

局所メモリを再利用するデータ処理装置

Info

Publication number
JP2001504970A
JP2001504970A JP51409499A JP51409499A JP2001504970A JP 2001504970 A JP2001504970 A JP 2001504970A JP 51409499 A JP51409499 A JP 51409499A JP 51409499 A JP51409499 A JP 51409499A JP 2001504970 A JP2001504970 A JP 2001504970A
Authority
JP
Japan
Prior art keywords
data
pointer
memory
thread
objects
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
JP51409499A
Other languages
English (en)
Inventor
リチャード ジェームス ホウルスワース
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Koninklijke Philips NV
Original Assignee
Philips Electronics NV
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 Philips Electronics NV filed Critical Philips Electronics NV
Publication of JP2001504970A publication Critical patent/JP2001504970A/ja
Ceased 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
    • 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
    • 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/0261Garbage collection, i.e. reclamation of unreferenced memory using reference counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/465Distributed object oriented systems
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99956File allocation
    • Y10S707/99957Garbage collection

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 マルチ・スレッド・プログラムを取り扱うデータ処理装置は、複数のデータ・オブジェクト(DO)を含むランダム・アクセス・メモリ(HM)に結合されたデータプロセッサを有する。各データ・オブジェクトは、メモリ・スタック(SF)が有する各スレッドと関連する各ポインタを介してアクセスされる。ガーベッジ・コレクションの手順は、定期的に、ランダム・アクセス・メモリに適用され、そこへの如何なるソースからのポインタも存在しないデータ・オブジェクト(DO)を識別し、そして削除する。データ・オブジェクトのいくつかに適用されるロッキング制約条件に従って、残りのオブジェクトはメモリ(HM)内で空き空間に圧縮される。ガーベッジ・コレクションの手順の局在化を可能にするために、リファレンス・スタック(RS)が、望ましくは、スレッドごとのレファレンス・テーブル(TT)を介して、単一フレームのみから識別されたデータ・オブジェクト(DO)を識別し、それらのオブジェクトをそのフレームの結論に基づいて削除するように、各スレッドスタック・フレーム(SF)に対して、設けられている。

Description

【発明の詳細な説明】 局所メモリを再利用するデータ処理装置 技術分野 本発明は、格納されたデータを扱う方法および装置、そして特に、しかしこれ らには限定されないが、データ処理装置の実/仮想メモリ空間のメモリ圧縮とガ ーベッジ・コレクション(ゴミ集め)に関する。 背景技術 ガーベッジ・コレクションとは、プログラムによるその最後の使用後にシステ ムメモリ空間を自動的に再利用することである。ガーベッジ・コレクション技法 の多くの例が、R.ジョーンズ他著、John Wiley & Sons社1996年刊(ISBN 0-471 -94148-4)、第1〜18頁の「ガーベッジ・コレクション:自動ダイナミックメモリ 管理のアルゴリズム」と、P.R.ウィルソンが、1992年9月にフランス、St.Malo で開催された、メモリ管理の1992年国際ワークショップ会報(Proceedings of t he 1992 International Workshop on Memeory Management)に発表した「ユニ・ プロセッサ・ガーベッジ・コレクション技法」とで、議論されている。メモリ割 当と再生とがプログラマまたはコンパイラによって扱われる多くの計算機プログ ラムの格納必要要件は、単純で、かつ予測可能である。特定のデータ構造のライ フタイムを、実行前に決定することはもはやできなくなっているので、プログラ ムの実行時に、この格納を自動的に再利用することを必須とする、より複雑な実 行パターンを有する言語が必要になって来ている。 上記ウィルソンの参考文献に記載されている注目すべきガーベッジ・コレクシ ョン/メモリ再利用技法は、マーク・スイープ・コレクションである。多くのガ ーベッジ・コレクション技法には、二段階手順が広く採用されている。その名前 が示すように、まず、データ・オブジェクトにリンクするポインタによりパスを トレースすることによって到達可能な格納されている全てのオブジェクトをマー クし、次ぎに、メモリを掃引する、すなわち、そのスペースが再利用される可能 性の有るマークされていないオブジェクトを決定するために、メモリに格納され ている全てのオブジェクトを調べる。マーク・コンパクト・コレクションおよび コピー・コレクションのような他の技法の場合、格納されているデータ・オブジ ェクトをメモリ内で移動させ、「活性」オブジェクトとガーベッジの隣接領域( ガーベッジ領域はオーバライトが可能)を形成する。 多くの場合、ガーベッジ・コレクションは、単一の大域ヒープ、すなわち、デ ータ構造またはオブジェクトが特定の順序に格納されていない単一メモリ領域、 で作動するシステム全体のタスク、つまり、特定スペースが特定オブジェクトを 保持するのに充分大きいか否かと言う点についてのみのタスクである。多くの言 語の場合、オブジェクトを局所的に格納すると言う概念は存在しないので、大域 ヒープは、例えば、単一スレッドに対し局所的である、多くの短寿命データ・オ ブジェクトに使用されるであろう。この同じガーベッジ・コレクションまたはデ ータ・オブジェクトのソート技法が、通常、スレッド間で共有されているより長 いタームデータについてこのカテゴリに適用されるので、コレクションに要する 合計時間は非常に長くなり、この局所データを処理する負荷は、システム全体の ガーベッジ・コレクション処理に移転される。 発明の開示 本発明の目的は、ガーベッジ・コレクションにかかわる通常の処理負荷をマル チスレッド環境内で分散させることによって、効率を増加させることができる手 段を提供することである。 本発明は、マルチ・スレッド・プログラムを取り扱うデータ処理装置であって 、前記装置が、複数のデータ・オブジェクトを含むランダム・アクセス・メモリ に結合されているデータ・プロセッサを有し、各当該データ・オブジェクトが、 前記メモリ内でそれぞれ既知の位置にあり、かつ各スレッドに関連するメモリ・ スタックが有する各ポインタによりアクセスされ、如何なるソースからのそこへ のポインタも実在しないランダム・アクセス・メモリ内のデータ・オブジェクト を定期的に決定し、かつそれらを削除するように構成されている、前記データ処 理 装置において、前記装置が、さらに、それぞれが各メモリ・スタック・フレーム に割当てられている複数のリファレンス・バッファを有し、各リファレンス・バ ッファが、前記各スタック・フレームによって参照される各データ・オブジェク トへのポインタを保持し、前記装置が、各スレッド・メモリ・スタック・フレー ムの結論により前記関連するレファレンスバッファをクリアするように構成され ていて、かつ各参照されたデータ・オブジェクトが、他の如何なるリファレンス ・バッファにおいてもこへのいかなるポインタも有しないことを特徴とするデー タ処理装置を、提供する。 各スレッドに対するリファレンス・バッファの使用によって、1つのスレッド のみによって参照されるこれらのデータ・オブジェクトは、当該スレッド・メモ リ・スタック部(スタック・フレーム)がクリアされると、即座に削除することが できる。このようにして、これらの単一で参照されたオブジェクトは、大域ガー ベッジ・コレクションを輻輳させることよりむしろ「局所的」に整理されるガー ベッジとすることができる。これには、スタックからのすべてのオブジェクトが クリアされた後でも、ポインタが他のデータ・オブジェクトに残存すると言う1 つの例外がある。これに対処するために、その大域フラグセットをもつデータ・ オブジェクトは何れもクリアされないように装置をさらに構成して、格納されて いる各データ・オブジェクトに、他のデータ・オブジェクトからこのデータ・オ ブジェクトへのポインタの存在によって、いわゆる大域フラグセットを含ませる ことが出来る。 前述した実施例の場合、ハンドル・テーブルを保持する追加データ記憶装置を 設けて、各参照されたデータ・オブジェクトが、ハンドル・テーブル・エントリ へのポインタを含み、かつ各ハンドル・テーブルのエントリが、各データ・オブ ジェクトのランダム・アクセス・メモリ内の位置へのポインタを保持するように しても良い。このようなハンドル・テーブルに加え、この装置は、さらに、リフ ァレンス・バッファから各データ・オブジェクトへのポインタの数を決定し、か つそのデータ・オブジェクトに対してエントリを有するリファレンス計数値とし て、この数をハンドル・テーブル内に格納することができる手段を有していても 良い。これに代えて、各データ・オブジェクトに対するリファレンス計数値エン トリとしてこの数を保持する追加データ記憶装置と共に、リファレンス・バッフ ァから各データ・オブジェクトへのポインタの数を測定することが出来る手段を 設けても良い。この後者の場合、データ・オブジェクトの位置へのハンドル・テ ーブルのポインタは、別のデータ格納リファレンスの計数値エントリへのポイン タと、そのエントリからランダム・アクセス・メモリ内のデータオブジェクへの 別のポインタとを有していても良い。 代替構成の場合、格納されたデータ・オブジェクトを、比較的単純に、つまり 、ハンドル・テーブル・エントリへのまたはいかなる他のポインタへのポインタ も格納せずに、保持することが出来る。このような構成の場合、ハンドル・テー ブル・エントリへのリンクは、各リファレンス・バッファの各エントリからの別 のポインタによって適切に設けることが出来る。 この装置は、削除されていないデータ・オブジェクトを移動させることにより ランダム・アクセス・メモリの内容を定期的に圧縮する手段を含むことが望まし い。他のスレッドによって必要とされるかもしれない障害となるオブジェクトを 除外するために、圧縮手段が、関連リファレンス計数値がゼロより大であるデー タ・オブジェクトは移動させないことが望ましい。これをコンパクタに示すため に、各格納されたデータ・オブジェクトに、設定されるとゼロより大であるリフ ァレンス計数値を示すロックフラグを適切に含ませても良い。別の代替手段の場 合、各データ・オブジェクトのサイズを最小に抑えるために、代わりに、ハンド ル・テーブルによってロックフラグを保持させても良い。各リファレンス・バッ ファの容量が決まっていて、この装置が、さらに、リファレンス・バッファが満 杯に達するのを検出することができ、かつスレッド・メモリ・スタック・フレー ムの結論の前に、バッファに対しガーベッジのクリアランスを実行するように構 成されている手段を有する場合には、さらに圧縮をかけることが出来る。 別の実施例の場合、別のデータ記憶装置が、各スレッドに対し、スレッドによ って参照される各オブジェクトを各々マークする個々のエントリを保持する各ス レッド・リファレンス・テーブルを保持するようにすることができる。そのよう なスレッド・リファレンス・テーブルと共に、各リファレンス・バッファは、適 切に、各参照されたデータ・オブジェクトに対し、各スレッド・テーブル・エン トリへのポインタを保持する。このような構成により、リファレンス構造の上述 した機能は、スタック・フレームごとのリファレンス・バッファとスレッドごと のスレッド・テーブルとに分割される。この構成は、オーバヘッドが低いリファ レンス計数を実現し、かつスタックの保守的走査の必要性を除く、ガーベッジ・ コレクションの目的のためのスタックへのインタフェースとして機能する。 本発明は、また、マルチ・スレッド・プログラムを扱うデータ処理装置に使用 するメモリ管理方法であって、前記メモリが、複数のデータ・オブジェクトを含 み、各当該データ・オブジェクトが、前記メモリ内の各既知位置にあって、かつ 各スレッドに関連するメモリ・スタックが有する各ポインタを介してアクセスさ れ、前記方法が、どのソースからもそこへの実在しないポインタを有するランダ ム・アクセス・メモリ内のデータ・オブジェクトを定期的に決定し、かつそれら を削除するメモリ管理方法において、各メモリ・スタックに対し、リファレンス ポインタを、前記各スタックによって参照される各データ・オブジェクトに対し 発生させ、そして各スレッド・メモリ・スタック・フレームの取り扱いの結論に より、前記関連リファレンスポインタと、そこへの他の如何なるリファレンスポ インタも有しない各参照されたデータ項目とを削除することを特徴とするメモリ 管理方法を提供する。本発明の他の特徴は、上述した請求項以外の請求項に記載 されている。 図面の簡単な説明 本発明を、以下に、添付の図面を参照して具体例により説明する。 第1図は、本発明の実施に適するデータ処理システムの構成図である。 第2〜7図は、第1図のようなシステムの汎用メモリとリファレンス・スタック の間の機能的な関係を線図的に表す。 発明を実施するための最良の形態 第1図は、例えば、バーチャル環境を定義するデータのブラウザとしてシステ ムを構成する、多くのソフトウェア・ユーティリティのホストとして機能するパ ーソナル・コンピュータのようなデータ処理システムを表す。このシステムは、 アドレス・データバス12を介してランダムアクセスメモリ(RAM)14と読み出し専 用メモリ(ROM)16とに結合されている中央処理装置(CPU)10を有する。これらのメ モリは、1または数個の集積回路装置により構成しても良いし、またCD-ROMのよ うな追加(リムーバブル)メモリ素子の読み込み手段とシステムのハードディスク により、容量を拡張しても良い。本発明は、特に、CPU10の制御の下でのRAM14の 動作範囲のメモリ管理について実施される。このための制御プログラムは、初め 、ROM16に保持させ、パワーアップ時にオペレーティングシステムにロードさせ ても良い。 また、キーボードおよびマウスまたはトラックボールのようなカーソル制御装 置および選択装置を適切に有していても良い第一および第二ユーザ入力装置18、 20も、バス12を介してCPU10に結合されている。システムからのオーディオ出力 は、オーディオ処理ステージ24により駆動される1個または複数のスピーカ22に 与えられる。システムからのビデオ出力は、CPU10の制御の下にディスプレイ・ ドライバ・ステージ28によって駆動されるディスプレイ・スクリーン26に与えら れる。 システムの別のデータ・ソースは、バス12に結合されていて、このシステムの 端に設けられているネットワーク・インタフェース30に結合されている、例えば 、インターネットのような、オンライン・リンクを介した離れたサイトである。 例えば、システムが個人のホームユーザ向けの場合、データ・リンクはローカル ・サービス・プロバイダへの電話接続となる可能性が高いと言うように、インタ フェースの構成は、システムが結合されるデータ・ネットワークのタイプに依存 するが、インタフェースの正確な構成は本発明の不可欠の特徴ではない。そのよ うな場合、インタフェース30には適切にモデムが組み込まれているであろう。IS DN接続のようなデータリンクの別のタイプの場合、インタフェースはそれに適合 するように構成されるであろう。 第2〜7図は、各々、第1図のシステムからの多くのディスクリートメモリ領域 、そして特に、様々なプログラムスレッドで使用される膨大なデータ・オブジェ クトDOを保持するヒープ・メモリHMを、線図的に示す。以下の例は、Java(サン ・マイクロシステムズ社の登録商標)仮想計算機のメモリ管理技法に対 応し、そして用語はそれに従って解釈されるべきである。しかしながら、本発明 は、Java対応システム、オブジェクト指向言語システムまたは純粋仮想メモリ管 理に限定されないことは理解されるであろう。 図示の装置の場合、データ・オブジェクトが、それらが最後に参照された後、 プログラムにより除去されるように、ガーベッジ・コレクションがヒープ・メモ リHMに対して実行される。各オペレーティング・プログラム・スレッドは、一群 のスタック・フレームSFを有し、かつ(後述されるように)ガーベッジ・コレクシ ョンの処理を局在化するために、各スタック・フレームにはそれぞれリファレン ス・スタックRSが与えられている。ハンドル・テーブルHTが、ヒープ内のデータ ・オブジェクトの位置を識別するポインタを有するように、設けられている。従 来システムは、ハンドル・テーブルを介してルートされるヒープ・オブジェクト へのすべてのリファレンスを保持するのに対し、本発明の実施例の場合、第7図 を参照して記述される具体例のように、ハンドル・テーブルが、ある情況下では 省略することができるように、オブジェクトは、スタック・フレームSFとそれら の関連リファレンス・スタックRSの両方から、ポインタによって直接参照される ことは注目される。 2個のクラス構造CLが、ヒープの右側に示されている。これらは、ヒープ内で データ・オブジェクトにより参照されるかもしれないが、これら自体はデータ・ オブジェクトにポインタを配置する必要はない。クラス構造の特定の形態とファ ンクションは、本発明の動作に対し本質的ではないので、これ以上説明されない 。 第2および3図に示される第一実施例は、さらに、以下に示される機能を有す る、様々なブロックを有する共有リファレンスストアSRS(後述される)を備えて ている。新しいデータ・オブジェクトのために空きスペースを再生するために、 ガーベッジ・コレクションの処理が、到達不可能なデータ・オブジェクト(すな わち、どのスタック・フレームでもまた他のデータ・オブジェクトでもそれらへ のポインタを有しないオブジェクト)を識別し、かつそれらを削除するように、 データ・オブジェクトDOが、大域ヒープに割り当てられる。各データ・オブジェ クトは、ハンドル・テーブルHT内のこのオブジェクトの関連ハンドルに 向かうハンドル・ポインタ50と、オブジェクトのクラス構造CLへのポインタと、 オブジェクトまたはアレー内の一連の語長データフィールドとを含む。 ハンドル・ポインタの使用は、適用される大域ガーベッジ・コレクションの方 法の形態に依存する。いくつかのケースの場合、データ・オブジェクトが、ポイ ンタを有しない(このような構成ではクラス構造は省略される)ことが必要である 。このような場合、ハンドル・ポインタ50を省略し、その代わりに、第2図の点 線150によって示されるように、リファレンス・スタックRS内の対応するオブジ ェクトエントリから発生させるハンドル・ポインタを設けても良い。この構成は 、リファレンス・スタックの割当てに必要なメモリを増大させるが、各データ・ オブジェクトに含まれる追加データの量を減少させ、かつ大域ガーベッジの処理 に関する利用可能な技法の選択肢を増やす。 ハンドル・テーブルは、データ・オブジェクトへのポインタの大域テーブルを 提供する。事実、他のヒープ・オブジェクトのフィールド内でのオブジェクトへ のリファレンスは、ハンドル・テーブルへのインデックスである。オブジェクト ・フィールドの値は、環境によって変化する。オブジェクトを参照するスタック RSが無い場合、第2図のオブジェクト52のように、それは、オブジェクトへのダ イレクト・リファレンスを含む。1つのスタックしか、オブジェクトへのアクセ スを有しない場合も、第2図のオブジェクト54のように、オブジェクトフィール ド・ポインタは、オブジェクトを示す。複数のスタックが、データ・オブジェク トを参照する場合には、ハンドル・テーブルのフィールドは、第3図のように、 共有リファレンスSRSに対するポインタ56を含む。このSRSは、オブジェクトへの リファレンス・スタック・ポインタの数の計数値と、そのオブジェクトに戻るポ インタとを維持する。データ・オブジェクトDOが、圧縮プロセスによって移動さ れていた場合、ハンドル・テーブル・エントリは更新される。 スタック・フレームSFは、方法引数、ローカル変数、固定サイズ・オペランド ・スタック、および特定なシステム・アプリケーションによって必要とされる全 ての追加状態情報から成る。また、オブジェクト・リファレンスである各スタッ ク・エントリに対しては、データ・オブジェクトのエントリも、このスタッ ク・フレームのリファレンス・スタックRSに加えられる。リファレンス・スタッ ク自体は、単一スタック・フレームと関連する固定サイズバッファであり、かつ スタック上に配置されたデータ・オブジェクトへのポインタから成る。スタック ・フレームによって参照することができるオブジェクトの最大数は、スタック・ フレームのサイズに等しい。したがって、リファレンス・スタックは、少なくと もスタック・フレームと同じ大きさでなければならないが、そのサイズに上限は ない。スレッドがオブジェクトへの唯一のアクセサの場合、そのオブジェクトに 対しては、リファレンス・スタック・エントリは1つしか存在しないであろう。 リファレンス・スタックへのエントリは、データ・オブジェクトをヒープHM内の その位置に「ロックする」。リファレンス・スタックからの取り外しは、このス レッドに対するオブジェクトを「アンロック」する。データ・オブジェクト上に 如何なるロックもないときのみ、圧縮プロセスが可能となり、メモリ内でこのオ ブジェクトが移動する。 上述した実施例の場合、リファレンスからスタックへの変換には追加処理が必 要であるが、スタック上のすべてのリファレンスがダイレクトポインタであるの で、ハンドルをデリファレンスするオーバヘッドはすべての有効データに対して 除かれる。リファレンス・スタックの使用により、大域マークスイープアルゴリ ズムによって局所のみのデータをその削除前に処理する必要がなくなる。このこ とは、ガーベッジのより速いターンアラウンドを与えるので、より多くの空きメ モリが得られることになる。また、有効データのガーベッジ・コレクションの作 業は、データにアクセスする実際のスレッドにリンクしているので、大域ガーベ ッジ・コレクションの負荷は減少する。すべてのリファレンス・スタック・ボイ ンタが除去されたとき、他のヒープ・オブジェクト内に存在するそれへのポイン タを有するオブジェクトが誤って削除されてしまうことを防止するために、各オ ブジェクト(または、関連ハンドル・テーブル・エントリ)は、大域フラグを有し ていても良い。ポインタが、他のヒープ・オブジェクトの中に存在している場合 には、大域フラグが設定され、これにより局所ガーベッジ・クリアランス演算の 間のオブジェクトの削除が防止される。 (共有リファレンス記憶SRSの形態で)第二オブジェクト・インデックスを維 持する必要が無いようにするために、第4および5図で示される本発明の一代替 実施例は、リファレンス・スタックからオブジェクトへのリファレンスの数の訃 数値を含むように拡張されているハンドルデータ構造HTを有する。単一スタック のみからアクセスされるオブジェクトは、ハンドルを有しないので、第4図のオ ブジェクト40に対して示されるように、スタック・フレームの結論に基づいてス レッドを実行することによって即座に削除することが出来る。42のようなリファ レンス計数値がゼロのオブジェクトは、オブジェクトに対するダイレクト・リフ ァレンスが存在しない「アクティブ」でない状態にある。従って、これらのオブ ジェクトは、圧縮により移動可能である。コンパクタは、データ・オブジェクト が移動されると、ハンドル内のオブジェクト・フィールドを更新しなければなら ない。第5図の44のようなオブジェクトは、複数のリファレンス・スタック(オ ブジェクト44のリファレンス計数値=2)からのダイレクト・リファレンスが存在 するので、アクティブであり、そしてこれは、圧縮の間、移動しないようにロッ クされる。 リファレンス・スタックRSは、サイズが固定されているので、スタック・フレ ームが数多くのデータ・オブジェクトを参照すると言うような極端な場合、リフ ァレンス・スタックはオーバーフローするかもしれない。リファレンス・スタッ クが満杯に近くなっていることが検知されると、リファレンス・スタックの内容 について、局所ガーベッジ・コレクションの演算が実行される。そのガーベッジ ・コレクションの演算は、新しいリファレンス・スタックの新規作成から適切に 始まる。次いで、既存のスタック内容が、ボトム−アップ順に読み出され、まだ 有効であるエントリ(まだ参照されているオブジェクト)は新しいスタックに移動 される。新しいスタックの形成後、古いスタックの残存オブジェクトの鍵は外さ れ、どの他のリファレンス・スタックとも共有されていないならば、それらは削 除される。新しいリファレンス・スタックがアクティブにされると、古いスタッ クは削除される(以後、スタック・フレームオブジェクトは、新しいリファレン ス・スタックから参照される)。この手順には、いくつかの変型が可能である点 は理解されるであろう。例えば、新しいリファレンス・スタックにリファレンス を形成する場合、そのオブジェクトのハンドル・フィールドがヌル値を有する か否かについてチェックを行っても良い。ヌル値を有している場合、古いリファ レンス・スタックのヌルハンドル・フィールドを有するオブジェクトを削除する (そして、他のオブジェクトのロックを解除する)前に、そのオブジェクトは、誤 って除去されるのを防ぐためにロックされる。 別の2つの実施例が、第6と7図に示されている。前の実施例と比較した場合 の主要な違いは、所定の時点で、その時点のスレッドによってアクセス可能なす べてのデータ・オブジェクトを保持する、各スレッドに対する特定のテーブルTT (以下、「スレッド・テーブル」と称する)を設けて、上述したリファレンス構造 の機能を、スタック・フレームごとのリファレンス・バッファまたはスタックお よびスレッドごとのスレッド・テーブルに分割するようにした点である。ガーベ ッジ・コレクションの目的のために、スレッド・テーブルが、そのスレッドによ って参照されるすべてのオブジェクトをマークするのに使用される。テーブルに は、重複したエントリは含まれず、かつオブジェクトを参照するそのスレッド内 には、スレッド・テーブル内の各エントリに対して、1つのリファレンス・バッ ファエントリしか存在しない。リファレンスを含むリファレンス・バッファRSは 、リファレンスを含むことができる最も低いスタック・フレームSFと関連してい る。最も低いスタック・フレームにおけるオブジェクトへのリファレンスが上書 きされることは、起こり得る。しかし、このことは、スタック・フレームが破壊 されるか、またはリファレンス・バッファがオーバーフローするときに、局所ガ ーベッジ・コレクションによって検出されるであろう。前述の具体例と同様に、 エントリは、リファレンスがファンクションから返されるとき、スタックに与え られる。 スタック書き込みバリア・ファンクションは、リファレンスがスレッド・テー ブル内に既に存在するか否かをテストし、もし存在しない場合には、スレッド・ テーブルとアクティブなリファレンス・バッファの両方にそれが挿入される。ス レッド・テーブルは、高速索引演算の最適化により効率的な差込みと分析が行わ れるように構成されている。 第6および7図の実施例の場合、局所オブジェクトと大域オブジェクトの間に 明白な区別は無い。あるオブジェクトが、1個のスレッド・リファレンス・テ ーブルによって一意的に参照される場合、そのオブジェクトを局所的であるとし ても良い。ガーベッジ・コレクションのシステムは、スレッド・テーブルと他の オブジェクトからのリファレンスの総数が、ゼロになるときを識別し、次いでそ のオブジェクトを削除する、リファレンス計数方法を使用しても良い。前の実施 例の場合で、第6図の60のように、大域ハンドル・テーブル内にこのリファレン ス計数値を格納することもできるが、第7図の実施例の場合のようにハンドル・ テーブルが省略される場合、リファレンス計数値を、62に示されるようにオブジ ェクト自体に含ませることができる。ガーベッジ・コレクションの間、リファレ ンス・バッファRSの内容は、前の例と同様にクリアされるが、リファレンスがバ ッファから除去されると、スレッド・テーブルTT内の各エントリも、クリアされ る。ガーベッジ・コレクションのシステムは、このオブジェクトに対し、リファ レンス計数値を減少させるトリガとしてこの事象を適切に使用する。 リファレンス・バッファは、このモデルを単に積み重ねることにより実現出来 る。しかしながら、リファレンス・バッファのオーバフローを瞬時に処理するた めに、そのライフタイムの間バッファにソーティングとサーチング演算を行って も良い。これを行うために、スレッドのリファレンス・スタックを、アレイに保 持しても良い。そしてこのスタックは、通常の演算では、スタックセマンティク スをもつであろう、すなわち、プッシュ演算のみを支持するであろう。しかしな がら、より効率的なサーチのために、局所ガーベッジ処理の間、特定のスタック ・フレームをソートしても良い。 スレッド・テーブルTTの使用は、各スレッドに対し別々のハンドル・テーブル をもつことと類似である。しかしながら、それはハンドル・テーブルを置換する ことにはならない。第6図の実施例のように同一システムで両方のテーブルを使 用することができる。スレッド・テーブルは、スタックの保守的走査の必要性を 除き、かつ低いオーバヘッド・リファレンスの計数を支持する、ガーベッジ・コ レクションの目的のスタックへのインタフェースと考えるべきである。 スレッド・テーブルを使用する第6および7図の実施例については、安全明示 削除演算を、スタック変数について使用することができる。以下のチェックがす べて満たされるならば、オブジェクトは安全に削除することが出来る: * アクティブなリファレンス・スタックに、リファレンスが、存在する; * 現在のスタック・フレームには、削除演算自体のレファレンス以外には 何のリファレンスも存在しない; * オブジェクトのリファレンス計数値が、他のどんなリファレンスもオブ ジェクトには存在しないことを示す。 局所ガーベッジ・コレクションの方法は、オブジェクトのセットがオブジェク トの年齢に基づいて仕切られている、世代別(または「短命の」)ガーベッジ・コ レクションの既知の技法にも使用することができる。オブジェクトの大部分は、 若いときには冗長になるであろうとの理由に基づいて、コレクションは、主によ り若い世代について行われる。通常のより古い世代を保持し、各スレッドに対し 最も若い世代を局所グループに分割させることも出来る。局所リファレンス構造 は、局所/若いグループに設定されたルートとして機能させることが出来、そし て、局所から大域までオブジェクトを遷移させることは、局所グループから次世 代までオブジェクトをプロモートする結果になる。 以上述べた具体例の実施例については、例えば、リファレンス・バッファ(リ ファレンス・スタックRS)サイズの調整のような、多くの変型が可能であること は理解されるであろう。局所ガーベッジは、手順出口でまたはリファレンス・バ ッファがオーバフローする時に整理されるので、リファレンス・バッファのサイ ズを調整することは、リサイクル期間とガーベッジ・コレクションのオーバーヘ ッドの間のバランスを管理する方法となる。ロッキング演算と削除演算が行われ ている間、オーバフローは、現在のスレッドの実行における短いポーズの原因と なるかもしれない。リファレンス・バッファが長ければ長いほど、これらのポー ズもより長くなるであろう。リファレンス・バッファのサイズを最小値にあまり に近く設定することは、頻繁なオーバフローと高い処理オーバヘッドの原因とな るが、他方、ガーベッジを発生させない方法に対してリファレンス・バッファを 大きくすることは無駄である。 スタック(バッファに対し最も簡単な構造として)として構成されるリファレン ス・バッファに関し、重複するエントリの検出が、冗長リファレンス計数値演算 を避けるために必要である。オブジェクトの鍵を開けるための小さいキューを使 用して、鍵が開けられるのを待つオブジェクトについてのロッキング演算を探知 し、かつ両方の演算を取り消すようにすることも出来る。スタックの使用に代え て、ハッシュ・テーブル・リファレンス・バッファを使用することもできる。こ れにより複雑さが増すことは否定要素ではあるが、妥当なハッシング・ファンク ションを採用することにより、処理費の増加分を、重複するロック演算の数の減 少により相殺させることができるかもしれない。 上述の記載から、本発明が、局所データを識別し、かつスレッド局所タスクと してこのデータを即座に整理させる既知の技法と比較して、格別の機能をもつ改 良されたガーベッジ・コレクションの技法を提供したことがわかるであろう。こ こで記述された実施例は、ある程度のメモリ・オーバヘッドの費用増大で、スタ ックから参照されたデータのハンドル・テーブルによって、間接指定を除去する と言う追加利点を与える。本出願では、主に、ソフトウェア駆動による具体例で 実施例を説明したが、上述した機能的な特徴は、ハードウェアでも、またハード ウェアとソフトウェアの組み合わせによっても同様に実現することができること は、当業者には、充分理解されるであろう。 本発明の開示から、他の変形例も、当業者に取っては明らであろう。このよう な変形例は、データ処理装置および/又は記憶装置、およびそれらの構成部品の 設計、製造、および使用で既に知られていて、かつここで既に記述した特徴に代 えまたはそれに加えて使用されるかもしれない、他の特徴に関するものかもしれ ない。請求項は、この出願では、特徴の特定な組合せににより表されているが、 本発明の開示範囲は、ここで明示的に、または暗示的に開示された新規な特徴ま たはそれらの新規な組み合わせ、またはそれらの一般化された事項も、それが、 どの請求項で請求されている発明に関係しているか否かに拘わらず、そして、本 発明と同じ技術的な問題のすべてまたはいずれかを解決しているかどうかに拘わ らず、含むことは、理解されるべきである。本出願人は、新しい請求項が、その ような特徴および/またはそのような特徴の組み合わせについて、本出願または 本出願から派生した別の出願の審査過程において、将来、生成され得ることをこ こに述べておく。

Claims (1)

  1. 【特許請求の範囲】 1. マルチ・スレッド・プログラムを取り扱うデータ処理装置であって、前記 装置が、複数のデータ・オブジェクトを含むランダム・アクセス・メモリに 結合されているデータ・プロセッサを有し、各当該データ・オブジェクトが 、前記メモリ内でそれぞれ既知の位置にあり、かつ各スレッドに関連するメ モリ・スタックが有する各ポインタによりアクセスされ、如何なるソースか らのそこへのポインタも実在しないランダム・アクセス・メモリ内のデータ ・オブジェクトを定期的に決定し、かつそれらを削除するように構成されて いる、前記データ処理装置において、前記装置が、さらに、それぞれが各メ モリ・スタック・フレームに割当てられている複数のリファレンス・バッフ ァを有し、各リファレンス・バッファが、前記各スタック・フレームによっ て参照される各データ・オブジェクトへのポインタを保持し、前記装置が、 各スレッド・メモリ・スタック・フレームの結論により前記関連するレファ レンスバッファをクリアするように構成されていて、かつ各参照されたデー タ・オブジェクトが、他の如何なるリファレンス・バッファにおいてもこへ のいかなるポインタも有しないことを特徴とするデータ処理装置。 2. さらに、ハンドル・テーブルを保持する追加データ格納装置を有し、各ハ ンドル・テーブル・エントリが、各データ・オブジェクトの前記ランダム・ アクセス・メモリ内の前記位置へのポインタを保持している請求項1に記載 の装置。 3. 各参照されたデータ・オブジェクトが、前記各ハンドル・テーブル・エン トリへのポインタを含む請求項2に記載の装置。 4. 各参照されたデータ・オブジェクトに対し、各レファレンス・バッファが 、前記各ハンドル・テーブル・エントリへのポインタを保持する請求項2に 記載の装置。 5. リファレンス・バッファから各データ・オブジェクトへのポインタの数 を決定し、かつそのデータ・オブジェクトに対する前記エントリを有するリ ファレンス計数値としてこの数を前記ハンドル・テーブル内に格納すること ができる手段を有している請求項2に記載の装置。 6. さらに、リファレンス・バッファから各データ・オブジェクトへのポイン タの数を測定することが出来る手段と、各前記データ・オブジェクトに対す るリファレンス計数値エントリとしてこの数を保持する別のデータ格納装置 とを有し、前記データ・オブジェクトの位置への前記ハンドル・テーブル・ ポインタが、前記別のデータ格納リファレンスの計数値エントリへのポイン タと、当該エントリから前記ランダム・アクセス・メモリ内の前記データ・ オブジェクへの別のポインタとを有している請求項2に記載の装置。 7. さらに、前記削除されていないデータ・オブジェクトを移動させることに より前記ランダム・アクセス・メモリの内容を定期的に圧縮するように構成 されている手段を有し、当該圧縮手段が、関連リファレンス計数値がゼロよ り大である如何なるデータ・オブジェクトも移動させない請求項5または6 に記載の装置。 8. 設定されると、ゼロより大であるリファレンス計数値を、前記メモリの内 容を定期的に圧縮するように構成されている当該手段に示すロック・フラグ を、各格納されたデータ・オブジェクトが、含む請求項7に記載の装置。 9. 各格納されたデータ・オブジェクトが、他のデータ・オブジェクトから前 記データ・オブジェクトへのポインタの存在による大域フラグ・セットを含 み、前記装置が、さらに、その大域フラグ・セットを有する如何なるデータ ・オブジェクトもクリアさせないように構成されている請求項7に記載の装 置。 10. 各リファレンス・バッファの容量が決まっていて、前記装置が、さらに 、リファレンス・バッファが満杯に達するのを検出することができ、かつ前 記スレッド・メモリ・スタック・フレームの結論の前に、前記バッファに対 しガーベッジ・クリアランスを実行するように構成されている手段を有 する請求項1に記載の装置。 11. さらに、各スレッドに対し、前記スレッドによって参照される各オブジ ェクトを各々マークする個々のエントリを保持する各スレッド・リファレン ス・テーブルを保持するデータ格納装置を、さらに、有する請求項1に記載 の装置。 12. 各リファレンス・バッファが、各参照されたデータ・オブジェクトに対 し、前記各スレッド・テーブル・エントリへのポインタを保持する請求項1 1に記載の装置。 13. マルチ・スレッド・プログラムを扱うデータ処理装置に使用するメモリ 管理方法であって、前記メモリが、複数のデータ・オブジェクトを含み、各 当該データ・オブジェクトが、前記メモリ内の各既知位置にあって、かつ各 スレッドに関連するメモリ・スタックが有する各ポインタを介してアクセス され、前記方法が、どのソースからもそこへの実在しないポインタを有する ランダム・アクセス・メモリ内のデータ・オブジェクトを定期的に決定し、 かつそれらを削除するメモリ管理方法において、各メモリ・スタックに対し 、リファレンスポインタを、前記各スタックによって参照される各データ・ オブジェクトに対し発生させ、そして各スレッド・メモリ・スタック・フレ ームの取り扱いの結論により、前記関連リファレンスポインタと、そこへの 他の如何なるリファレンスポインタも有しない各参照されたデータ項目とを 削除することを特徴とするメモリ管理方法。 14. 前記データ・オブジェクト・メモリの内容を定期的に圧縮するステップ を、さらに、有する請求項13に記載の方法。 15. そこへのリファレンス・ポインタを有するそれらの格納されたデータ・ オブジェクトを、ロックされているものと認識し、そしてそれらを前記圧縮 プロセスにより移動させない請求項14に記載の方法。
JP51409499A 1997-08-22 1998-07-16 局所メモリを再利用するデータ処理装置 Ceased JP2001504970A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GBGB9717715.8A GB9717715D0 (en) 1997-08-22 1997-08-22 Data processor with localised memory reclamation
GB9717715.8 1997-08-22
PCT/IB1998/001087 WO1999010811A1 (en) 1997-08-22 1998-07-16 Data processor with localised memory reclamation

Publications (1)

Publication Number Publication Date
JP2001504970A true JP2001504970A (ja) 2001-04-10

Family

ID=10817820

Family Applications (1)

Application Number Title Priority Date Filing Date
JP51409499A Ceased JP2001504970A (ja) 1997-08-22 1998-07-16 局所メモリを再利用するデータ処理装置

Country Status (7)

Country Link
US (1) US6304949B1 (ja)
EP (1) EP0938706B1 (ja)
JP (1) JP2001504970A (ja)
KR (1) KR100541174B1 (ja)
DE (1) DE69836796T2 (ja)
GB (1) GB9717715D0 (ja)
WO (1) WO1999010811A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008542933A (ja) * 2005-06-09 2008-11-27 ローデ ウント シュワルツ ゲーエムベーハー ウント コー カーゲー ディジタル計算装置のメモリを管理する方法

Families Citing this family (70)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6557091B2 (en) * 1997-08-22 2003-04-29 Koninklijke Philips Electronics N.V. Data processor with localized memory reclamation
GB9825102D0 (en) * 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
GB2345159B (en) * 1998-12-23 2003-08-20 Ibm Virtual machine memory management
GB2345160B (en) * 1998-12-23 2003-08-20 Ibm Virtual machine memory management
US6567557B1 (en) 1999-12-10 2003-05-20 Stmicroelectronics, Inc. Method for preventing dual-step half-pixel motion compensation accumulation errors in prediction-rich MPEG-2 sequences
AU4189700A (en) * 1999-04-01 2000-11-02 Ravisent Technologies, Inc. Optimal handling and manipulation of high-speed streaming media in a computing device
US6237060B1 (en) * 1999-04-23 2001-05-22 Sun Microsystems, Inc. Cache management techniques
JP3611295B2 (ja) * 2000-03-09 2005-01-19 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータシステム、メモリ管理方法及び記憶媒体
US6823351B1 (en) * 2000-05-15 2004-11-23 Sun Microsystems, Inc. Work-stealing queues for parallel garbage collection
US6826583B1 (en) 2000-05-15 2004-11-30 Sun Microsystems, Inc. Local allocation buffers for parallel garbage collection
US6507903B1 (en) 2000-06-20 2003-01-14 International Business Machines Corporation High performance non-blocking parallel storage manager for parallel software executing on coordinates
US6832378B1 (en) 2000-06-20 2004-12-14 International Business Machines Corporation Parallel software processing system
US7140018B1 (en) 2000-06-20 2006-11-21 International Business Machines Corporation Method of using a distinct flow of computational control as a reusable abstract data object
US6757891B1 (en) * 2000-07-12 2004-06-29 International Business Machines Corporation Method and system for reducing the computing overhead associated with thread local objects
US7168069B1 (en) 2000-07-12 2007-01-23 Stmicroelectronics, Inc. Dynamic generation of multimedia code for image processing
US6622226B1 (en) * 2000-07-31 2003-09-16 Microsoft Corporation Method and system for using a mark-list for garbage collection
US6813693B2 (en) * 2000-12-11 2004-11-02 Microsoft Corporation System and method for the discovery and use of repetitively accessed data
US7213249B2 (en) * 2000-12-22 2007-05-01 Oracle International Corporation Blocking cache flush requests until completing current pending requests in a local server and remote server
US7581011B2 (en) 2000-12-22 2009-08-25 Oracle International Corporation Template based workflow definition
US8015600B2 (en) 2000-12-22 2011-09-06 Oracle International Corporation Employing electronic certificate workflows
US7415607B2 (en) 2000-12-22 2008-08-19 Oracle International Corporation Obtaining and maintaining real time certificate status
US7363339B2 (en) * 2000-12-22 2008-04-22 Oracle International Corporation Determining group membership
US7937655B2 (en) 2000-12-22 2011-05-03 Oracle International Corporation Workflows with associated processes
US7085834B2 (en) 2000-12-22 2006-08-01 Oracle International Corporation Determining a user's groups
US7475151B2 (en) 2000-12-22 2009-01-06 Oracle International Corporation Policies for modifying group membership
US7711818B2 (en) 2000-12-22 2010-05-04 Oracle International Corporation Support for multiple data stores
US7349912B2 (en) 2000-12-22 2008-03-25 Oracle International Corporation Runtime modification of entries in an identity system
US7802174B2 (en) 2000-12-22 2010-09-21 Oracle International Corporation Domain based workflows
US7380008B2 (en) 2000-12-22 2008-05-27 Oracle International Corporation Proxy system
US6675261B2 (en) * 2000-12-22 2004-01-06 Oblix, Inc. Request based caching of data store data
US6751718B1 (en) * 2001-03-26 2004-06-15 Networks Associates Technology, Inc. Method, system and computer program product for using an instantaneous memory deficit metric to detect and reduce excess paging operations in a computer system
US7065747B2 (en) 2001-05-08 2006-06-20 Sun Microsystems, Inc. Identifying references to objects during bytecode verification
US6804681B2 (en) * 2001-05-08 2004-10-12 Sun Microsystems, Inc. Identifying and tracking object references in a java programming environment
US7103887B2 (en) * 2001-06-27 2006-09-05 Sun Microsystems, Inc. Load-balancing queues employing LIFO/FIFO work stealing
GB0116497D0 (en) * 2001-07-06 2001-08-29 Koninkl Philips Electronics Nv Receiver apparatus and method
US7225256B2 (en) 2001-11-30 2007-05-29 Oracle International Corporation Impersonation in an access system
US7840658B2 (en) 2002-05-15 2010-11-23 Oracle International Corporation Employing job code attributes in provisioning
US7216163B2 (en) 2002-05-15 2007-05-08 Oracle International Corporation Method and apparatus for provisioning tasks using a provisioning bridge server
US6862674B2 (en) * 2002-06-06 2005-03-01 Sun Microsystems Methods and apparatus for performing a memory management technique
US7328438B2 (en) * 2003-03-27 2008-02-05 International Business Machines Corporation Deallocation of computer data in a multithreaded computer
US7904487B2 (en) 2003-10-09 2011-03-08 Oracle International Corporation Translating data access requests
US7340447B2 (en) 2003-10-09 2008-03-04 Oracle International Corporation Partitioning data access requests
US7882132B2 (en) 2003-10-09 2011-02-01 Oracle International Corporation Support for RDBMS in LDAP system
US7594234B1 (en) 2004-06-04 2009-09-22 Sun Microsystems, Inc. Adaptive spin-then-block mutual exclusion in multi-threaded processing
US7644409B2 (en) * 2004-06-04 2010-01-05 Sun Microsystems, Inc. Techniques for accessing a shared resource using an improved synchronization mechanism
US7475397B1 (en) 2004-07-28 2009-01-06 Sun Microsystems, Inc. Methods and apparatus for providing a remote serialization guarantee
US7823158B2 (en) 2005-08-18 2010-10-26 International Business Machines Corporation Adaptive scheduling and management of work processing in a target context in resource contention
US20070104186A1 (en) * 2005-11-04 2007-05-10 Bea Systems, Inc. System and method for a gatekeeper in a communications network
CN101346634B (zh) * 2005-11-04 2012-10-24 甲骨文国际公司 用于通信网络中的网守的系统和方法
US8171466B2 (en) * 2006-05-16 2012-05-01 Oracle International Corporation Hitless application upgrade for SIP server architecture
US8112525B2 (en) * 2006-05-16 2012-02-07 Oracle International Corporation Engine near cache for reducing latency in a telecommunications environment
US8001250B2 (en) * 2006-05-16 2011-08-16 Oracle International Corporation SIP and HTTP convergence in network computing environments
US8219697B2 (en) * 2006-05-17 2012-07-10 Oracle International Corporation Diameter protocol and SH interface support for SIP server architecture
US7661027B2 (en) * 2006-10-10 2010-02-09 Bea Systems, Inc. SIP server architecture fault tolerance and failover
US20080140737A1 (en) * 2006-12-08 2008-06-12 Apple Computer, Inc. Dynamic memory management
US8078737B2 (en) * 2006-12-13 2011-12-13 Oracle International Corporation System and method for efficient storage of long-lived session state in a SIP server
US9667430B2 (en) * 2006-12-13 2017-05-30 Oracle International Corporation System and method for a SIP server with offline charging
US20080147551A1 (en) * 2006-12-13 2008-06-19 Bea Systems, Inc. System and Method for a SIP Server with Online Charging
US7657500B2 (en) * 2007-03-12 2010-02-02 Sun Microsystems, Inc. Concurrent extensible cuckoo hashing
JP2009037546A (ja) * 2007-08-03 2009-02-19 Hitachi Ltd スレッド固有領域を利用するメモリ管理方法およびその方法を用いたコンピュータ
US8140597B2 (en) * 2007-08-29 2012-03-20 International Business Machines Corporation Computer system memory management
US7991808B2 (en) * 2008-05-21 2011-08-02 Apple Inc. Per thread garbage collection
US20110252216A1 (en) * 2010-04-12 2011-10-13 Tatu Ylonen Oy Ltd Thread-local hash table based write barrier buffers
US8738877B2 (en) 2011-12-14 2014-05-27 Advance Micro Devices, Inc. Processor with garbage-collection based classification of memory
US10437720B2 (en) * 2014-03-12 2019-10-08 Optumsoft, Inc. Deferred destruction for efficient resource reclamation
US11573894B2 (en) 2020-10-29 2023-02-07 Oracle International Corporation Tracking garbage collection states of references
US11513954B2 (en) 2021-03-25 2022-11-29 Oracle International Corporation Consolidated and concurrent remapping and identification for colorless roots
US11573794B2 (en) * 2021-03-25 2023-02-07 Oracle International Corporation Implementing state-based frame barriers to process colorless roots during concurrent execution
US11875193B2 (en) 2021-03-25 2024-01-16 Oracle International Corporation Tracking frame states of call stack frames including colorless roots
US11507503B1 (en) 2021-05-19 2022-11-22 Oracle International Corporation Write barrier for remembered set maintenance in generational Z garbage collector

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4853842A (en) * 1985-09-11 1989-08-01 Texas Instruments Incorporated Computer memory system having persistent objects
US5321834A (en) * 1989-11-28 1994-06-14 Xerox Corporation Method and system for reclaiming unreferenced computer memory space
US5355483A (en) * 1991-07-18 1994-10-11 Next Computers Asynchronous garbage collection
US5765174A (en) * 1995-10-06 1998-06-09 Sun Microsystems, Inc. System amd method for distributed object resource management
US5761670A (en) * 1995-12-08 1998-06-02 Sun Microsystems, Inc. System and method for space efficient object locking using global and local locks
US5968157A (en) * 1997-01-23 1999-10-19 Sun Microsystems, Inc. Locking of computer resources
US5848423A (en) * 1997-04-23 1998-12-08 Sun Microsystems, Inc. Garbage collection system and method for locating root set pointers in method activation records

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008542933A (ja) * 2005-06-09 2008-11-27 ローデ ウント シュワルツ ゲーエムベーハー ウント コー カーゲー ディジタル計算装置のメモリを管理する方法

Also Published As

Publication number Publication date
EP0938706B1 (en) 2007-01-03
EP0938706A1 (en) 1999-09-01
WO1999010811A1 (en) 1999-03-04
GB9717715D0 (en) 1997-10-29
KR100541174B1 (ko) 2006-01-10
DE69836796T2 (de) 2007-10-11
KR20000068812A (ko) 2000-11-25
DE69836796D1 (de) 2007-02-15
US6304949B1 (en) 2001-10-16

Similar Documents

Publication Publication Date Title
JP2001504970A (ja) 局所メモリを再利用するデータ処理装置
JP4248025B2 (ja) 追跡型ゴミ集め用のスペースの限られたマーク付け構造
US6557091B2 (en) Data processor with localized memory reclamation
JP4130481B2 (ja) ポインタ依存擬似命令置換機構を含むライトバリアシステム及び方法
EP0914633B1 (en) Generation isolation system and method for garbage collection
JP4104668B2 (ja) ガーベッジコレクションページ境界横断ポインタストアをトラップするためのライトバリアシステム及び方法
US6424977B1 (en) Train-algorithm-based garbage collector employing reduced oversized-object threshold
US6185581B1 (en) Train-algorithm-based garbage collector employing fixed-size remembered sets
US6434576B1 (en) Popular-object handling in a train-algorithm-based garbage collector
US6434577B1 (en) Scalable-remembered-set garbage collection
JP2924705B2 (ja) メモリ管理方法およびオブジェクト管理方法
US6449626B1 (en) Reduced-cost remembered-set processing in a train-algorithm-based garbage collector
US4807120A (en) Temporal garbage collector with indirection cells
JP2002506550A (ja) 部分的に再配置されたオブジェクトのソース及び目標インスタンスに関する書込みバリアを含む有界休止時間ガーベッジコレクションシステム及び方法
US7765375B2 (en) Memory management method, information processing apparatus, and memory management program
North et al. Concurrent garbage collection on stock hardware
US7072918B2 (en) Remembered-set scrubbing to remove stale entries in an incremental garbage collector
US7617264B1 (en) Parallel remembered-set processing respecting popular-object detection
US7237085B2 (en) Architecture for a scalable heap analysis tool
KR100576904B1 (ko) 가비지수집페이지경계횡단포인터스토어를트랩하기위한기록배리어시스템및방법
KR100502380B1 (ko) 포인터-고유명령변형교환메카니즘을포함하는쓰기배리어시스템및방법
US20040111703A1 (en) Space-efficient object models for object-oriented programming languages
Clack UK Patent Application 9924061.1 A Data Structure, Memory Allocator and Memory Management System. Example of technique
Kumar et al. INTERNATIONAL JOURNAL OF ENGINEERING SCIENCES & RESEARCH TECHNOLOGY Comparative Study: Garbage Collector in OODBMS
JPH0552975B2 (ja)

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050705

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20060328

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080311

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080304

A313 Final decision of rejection without a dissenting response from the applicant

Free format text: JAPANESE INTERMEDIATE CODE: A313

Effective date: 20080805

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080930