JP2002519750A - ガ−べジコレクタ用の記憶済みデータオブジェクトのマーク付け方法 - Google Patents
ガ−べジコレクタ用の記憶済みデータオブジェクトのマーク付け方法Info
- Publication number
- JP2002519750A JP2002519750A JP2000556294A JP2000556294A JP2002519750A JP 2002519750 A JP2002519750 A JP 2002519750A JP 2000556294 A JP2000556294 A JP 2000556294A JP 2000556294 A JP2000556294 A JP 2000556294A JP 2002519750 A JP2002519750 A JP 2002519750A
- Authority
- JP
- Japan
- Prior art keywords
- objects
- finalizer
- data
- heap
- total number
- 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.)
- Pending
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/0261—Garbage collection, i.e. reclamation of unreferenced memory using reference counting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- 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/99956—File allocation
- Y10S707/99957—Garbage 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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
- Memory System (AREA)
Abstract
(57)【要約】
ファイナライザ処理を支援するマルチスレッディング環境にて、データオブジェクトによって規定された記録済みのデータ構造を通してマーク−スィープ(マークして削除する)ガーベジコレクションを行うデータ処理方法及び装置について記述する。スィーピング段(GC)はヒープを横切る線形スィープから成り、これにてDeletable(削除可能)のマーク状態を有するオブジェクトを削除し、また、ファイナライザを有し、且つPending(ペンディング)のマーク状態を有するオブジェクトをファイナライザの待ち行列に入れると共に、マーク付けをする。ファイナライザを有しているオブジェクトの数を追跡し、これをヒープメモリに割当てられている既知の総数と比較する。全ての始末可能なオブジェクトが見つからない場合に、ファイナライザが到達可能な全てのオブジェクトを識別するために、さらに別のマーク付け(MA)操作(D5-D6)を必要とする。しかし、見つけたオブジェクトの数と、記憶済みのオブジェクトの総数とが一致するように、最初のマーク付け操作(D1-D5)によって全ての始末可能なオブジェクトが見つかる場合には、マークした非到達可能オブジェクトをいずれも一度のパスで削除する(D5)ことができる。
Description
【0001】 (技術分野) 本発明は記憶済みのデータオブジェクトを処理する方法及び装置、特に限定さ
れるものではないが、データ処理装置の実記憶スペース又は仮想記憶スペースに
て実時間で実行する記憶圧縮及びガーベジコレクションプロシージャにおけるオ
ブジェクトに対する後始末(finalisation)の処理に関するものである。
れるものではないが、データ処理装置の実記憶スペース又は仮想記憶スペースに
て実時間で実行する記憶圧縮及びガーベジコレクションプロシージャにおけるオ
ブジェクトに対する後始末(finalisation)の処理に関するものである。
【0002】 (背景技術) ガーベジコレクションとは、システムの記憶スペースをプログラムによるその
最終使用後に自動的に再生利用することである。ガーベジコレクト技法について
の多数の例は、1996年にJohn Wiley & Sons社にて発行されたISBN0-471-
94148-4の第1〜18頁におけるR.Jones外著による論文“Garbage Collection:
Algorithms for Automatic Dynamics Memory Management”に記載されて
いる。多くのコンピュータプログラムの格納要件は簡単で、しかも予測可能であ
り、記憶域の割当て及び再生はプログラマ又はコンパイラによって処理されるも
、特殊なデータ構造の寿命をプログラムの実行時間の前には最早決めることがで
きないように、プログラムの実行パターンがもっと複雑な機能言語となる傾向に
あり、従って、プログラムを実行させるのに斯かる記憶域を自動的に再生利用す
ることは必須事項である。
最終使用後に自動的に再生利用することである。ガーベジコレクト技法について
の多数の例は、1996年にJohn Wiley & Sons社にて発行されたISBN0-471-
94148-4の第1〜18頁におけるR.Jones外著による論文“Garbage Collection:
Algorithms for Automatic Dynamics Memory Management”に記載されて
いる。多くのコンピュータプログラムの格納要件は簡単で、しかも予測可能であ
り、記憶域の割当て及び再生はプログラマ又はコンパイラによって処理されるも
、特殊なデータ構造の寿命をプログラムの実行時間の前には最早決めることがで
きないように、プログラムの実行パターンがもっと複雑な機能言語となる傾向に
あり、従って、プログラムを実行させるのに斯かる記憶域を自動的に再生利用す
ることは必須事項である。
【0003】 後始末とは、Sun Microsystems社のJava (R)及びModula-3及びCedarのよ
うな他の最近のガーベジコレクト言語及びプログラミング環境にて用いられてい
るコンセプトのことである。記憶してあるデータオブジェクトにはファイナライ
ザを関連させることができ、これはオブジェクトが名目上ガーベジコレクション
を利用できるようになった後ではあるが、データを回収する前に実行させるべき
でものである。この機能の目的は、或るオブジェクトに、このオブジェクトを消
失させる前に、このオブジェクトが主張していた他のシステムの資源を一掃させ
ることにある。例えば、JavaFileオブジェクト用のファイナライザは、そのオブ
ジェクトが主張していたシステムファイルの全てのハンドルを閉鎖する。
うな他の最近のガーベジコレクト言語及びプログラミング環境にて用いられてい
るコンセプトのことである。記憶してあるデータオブジェクトにはファイナライ
ザを関連させることができ、これはオブジェクトが名目上ガーベジコレクション
を利用できるようになった後ではあるが、データを回収する前に実行させるべき
でものである。この機能の目的は、或るオブジェクトに、このオブジェクトを消
失させる前に、このオブジェクトが主張していた他のシステムの資源を一掃させ
ることにある。例えば、JavaFileオブジェクト用のファイナライザは、そのオブ
ジェクトが主張していたシステムファイルの全てのハンドルを閉鎖する。
【0004】 しかしながら、ファイナライザは他の方法の処理能力を全て有する正に別の部
類のオブジェクト処理法であるので、ファイナライザプロシージャは始末される
オブジェクトからアクセス可能な全てのデータオブジェクトにアクセスすること
ができる。従って、ファイナライザが到達可能(reachable)の全てのオブジェク
トはガーベジコレクションにより明示的に排除しなければならない。さらに、フ
ァイナライザ法の場合には、ファイナライザが到達可能で、このファイナライザ
によって始末されるオブジェクトを含むようなオブジェクトを再度到達可能なオ
ブジェクトにすることによって復活させることができる。従って、ガーベジコレ
クションプロシージャは、始末可能な(finalisable)オブジェクトのファイナラ
イザが実行されて、オブジェクトの到達可能性が再評価されるまでは始末可能な
オブジェクトから到達可能なオブジェクトを削除することはできない。Java及び
他の言語では、オブジェクトを繰り返し復活させることは一般に、各オブジェク
トに対するファイナライザを一度しか実行させないことからして不可能である。
ここでは斯かる後始末の制御について考察する。
類のオブジェクト処理法であるので、ファイナライザプロシージャは始末される
オブジェクトからアクセス可能な全てのデータオブジェクトにアクセスすること
ができる。従って、ファイナライザが到達可能(reachable)の全てのオブジェク
トはガーベジコレクションにより明示的に排除しなければならない。さらに、フ
ァイナライザ法の場合には、ファイナライザが到達可能で、このファイナライザ
によって始末されるオブジェクトを含むようなオブジェクトを再度到達可能なオ
ブジェクトにすることによって復活させることができる。従って、ガーベジコレ
クションプロシージャは、始末可能な(finalisable)オブジェクトのファイナラ
イザが実行されて、オブジェクトの到達可能性が再評価されるまでは始末可能な
オブジェクトから到達可能なオブジェクトを削除することはできない。Java及び
他の言語では、オブジェクトを繰り返し復活させることは一般に、各オブジェク
トに対するファイナライザを一度しか実行させないことからして不可能である。
ここでは斯かる後始末の制御について考察する。
【0005】 PC又はワークステーションでは、後始末処理を支援するための特別な処理及び
メモリ負荷は通常、その支援が総体効率に悪影響を及ぼすことは勿論ではあるが
、PCにて一般に利用できるメモリの量からして問題にはならない。しかしながら
、セット−トップボックスのような低メモリ環境では、ファイナライザに対する
支援が問題を起生し、同時並行又はインクリメンタル式のガーベジコレクタでも
、それが未決のファイナライザの幾つか、又はそのすべてを実行して、これらの
ファイナライザによって用いられていた記憶域を再生利用できるようになるまで
プログラムを停止させなければならない。
メモリ負荷は通常、その支援が総体効率に悪影響を及ぼすことは勿論ではあるが
、PCにて一般に利用できるメモリの量からして問題にはならない。しかしながら
、セット−トップボックスのような低メモリ環境では、ファイナライザに対する
支援が問題を起生し、同時並行又はインクリメンタル式のガーベジコレクタでも
、それが未決のファイナライザの幾つか、又はそのすべてを実行して、これらの
ファイナライザによって用いられていた記憶域を再生利用できるようになるまで
プログラムを停止させなければならない。
【0006】 従って、本発明の目的は始末可能なオブジェクトを支援すると共に、オブジェ
クト回収時間をできるだけ最少にするインクリメンタルガーベジコレクションシ
ステムを提供することにある。
クト回収時間をできるだけ最少にするインクリメンタルガーベジコレクションシ
ステムを提供することにある。
【0007】 (発明の開示) 本発明は、連続ヒープメモリにおけるポインタを識別することによってリンク
されているデータオブジェクトから成るデータ構造を、削除可能オブジェクトと
して分類されるデータオブジェクトのガーベジコレクションでトラバースするた
めのガーベジコレクション兼マーク付け法であって、該方法が: a)或る選択したルートオブジェクトに対して、該オブジェクトによってキャリ
ーされるポインタをトラバースして、該ルートオブジェクトにリンクされるオブ
ジェクトを特定するステップ;及び b)前のステップによって識別したオブジェクトにリンクされるさらなる他のオ
ブジェクトを特定すべくポインタをトラバースするステップ; を具えており、トラバースすべきさらなる他のポインタがなくなるまで前記ステ
ップb)を繰り返して、これにて識別されるオブジェクトをマーク付きオブジェ
クトとして分類し、前記ヒープメモリにおけるデータオブジェクトの幾つかのも
のがファイナライザをキャリーし、且つ他のさらなる幾つかのオブジェクトが、
これらのオブジェクトがペンディングオブジェクトとして分類されるファイナラ
イザによって、潜在的に到達可能なオブジェクトとして識別されるようにするガ
ーベジコレクション兼マーク付け方法において、ヒープにおけるファイナライザ
をキャリーしているオブジェクトの第1総数を保持し、各トラバース操作に対し
て、ファイナライザをキャリーしているオブジェクトの検出総数が、前記第1保
持総数以下の場合には別のスィープ操作に着手して、残りのファイナライザ−到
達可能オブジェクトに対するルートオブジェクトを識別して、マークを付け、ま
た、前記検出したオブジェクトの総数が前記第1保持総数と一致する場合には、
ペンディングオブジェクトとして分類されるそれらのオブジェクトを、さらなる
他のスウィープ操作に着手しないで、削除可能なオブジェクトとして直ちに再分
類することを特徴とするガーベジコレクション兼マーク付け方法にある。
されているデータオブジェクトから成るデータ構造を、削除可能オブジェクトと
して分類されるデータオブジェクトのガーベジコレクションでトラバースするた
めのガーベジコレクション兼マーク付け法であって、該方法が: a)或る選択したルートオブジェクトに対して、該オブジェクトによってキャリ
ーされるポインタをトラバースして、該ルートオブジェクトにリンクされるオブ
ジェクトを特定するステップ;及び b)前のステップによって識別したオブジェクトにリンクされるさらなる他のオ
ブジェクトを特定すべくポインタをトラバースするステップ; を具えており、トラバースすべきさらなる他のポインタがなくなるまで前記ステ
ップb)を繰り返して、これにて識別されるオブジェクトをマーク付きオブジェ
クトとして分類し、前記ヒープメモリにおけるデータオブジェクトの幾つかのも
のがファイナライザをキャリーし、且つ他のさらなる幾つかのオブジェクトが、
これらのオブジェクトがペンディングオブジェクトとして分類されるファイナラ
イザによって、潜在的に到達可能なオブジェクトとして識別されるようにするガ
ーベジコレクション兼マーク付け方法において、ヒープにおけるファイナライザ
をキャリーしているオブジェクトの第1総数を保持し、各トラバース操作に対し
て、ファイナライザをキャリーしているオブジェクトの検出総数が、前記第1保
持総数以下の場合には別のスィープ操作に着手して、残りのファイナライザ−到
達可能オブジェクトに対するルートオブジェクトを識別して、マークを付け、ま
た、前記検出したオブジェクトの総数が前記第1保持総数と一致する場合には、
ペンディングオブジェクトとして分類されるそれらのオブジェクトを、さらなる
他のスウィープ操作に着手しないで、削除可能なオブジェクトとして直ちに再分
類することを特徴とするガーベジコレクション兼マーク付け方法にある。
【0008】 本発明は、ポインタを識別することによってデータ構造内でリンクされ、しか
もメモリの連続領域におけるヒープ内に複数のデータオブジェクトを包含してい
るランダムアクセスメモリと結合されるデータプロセッサを具えているデータ処
理装置であって、該装置がさらに、マーク付けする部類の或る予定したオブジェ
クト組のうちの1つのオブジェクトに対する識別子を各ヒープのオブジェクトに
対して包含している追加の第1記憶手段も具えており、且つ前記プロセッサが、
記憶済みの複数個のデータオブジェクトに対して次ぎのような操作、即ち、 a)或る選択したルートオブジェクトに対して、該オブジェクトによってキャリ
ーされるポインタをトラバースして、該ルートオブジェクトにリンクされている
オブジェクトを特定し;且つ b)それらの識別したオブジェクトにリンクされるさらなる他のオブジェクトを
特定すべくそこからポインタをトラバースする; 操作を行うべく構成されるようにし、前記プロセッサが、トラバースすべきさら
なる他のポインタがなくなるまで前記操作b)を繰り返して、これにて識別され
るオブジェクトに対する記憶済みの部類識別子がマーク付きの識別子としてセッ
トされるようにし、前記ヒープのデータオブジェクトの幾つかのものがファイナ
ライザをキャリーし、且つ他のさらなる幾つかのオブジェクトは、オブジェクト
をペンディングのオブジェクトとして分類するファイナライザによって潜在的に
到達可能なオブジェクトとして識別されるようにしたデータ処理装置において、
前記プロセッサが、ファイナライザをキャリーしているヒープメモリのオブジェ
クトの第1総数を保持している手段に結合され、且つ該プロセッサが、各トラバ
ースに対して、ファイナライザをキャリーしているオブジェクトの検出総数が、
前記第1保持総数以下の場合に、別のスィープ操作に着手して、残りのファイナ
ライザ−到達可能オブジェクトに対するルートオブジェクトを識別すると共に、
マークを付け、また、前記検出したオブジェクトの総数が第1保持総数と一致す
る場合には、さらなる他のスウィープ操作に着手しないで、いずれも削除可能な
ペンディングオブジェクトとして再分類すべく構成されるようにしたことを特徴
とするデータ処理装置にもある。
もメモリの連続領域におけるヒープ内に複数のデータオブジェクトを包含してい
るランダムアクセスメモリと結合されるデータプロセッサを具えているデータ処
理装置であって、該装置がさらに、マーク付けする部類の或る予定したオブジェ
クト組のうちの1つのオブジェクトに対する識別子を各ヒープのオブジェクトに
対して包含している追加の第1記憶手段も具えており、且つ前記プロセッサが、
記憶済みの複数個のデータオブジェクトに対して次ぎのような操作、即ち、 a)或る選択したルートオブジェクトに対して、該オブジェクトによってキャリ
ーされるポインタをトラバースして、該ルートオブジェクトにリンクされている
オブジェクトを特定し;且つ b)それらの識別したオブジェクトにリンクされるさらなる他のオブジェクトを
特定すべくそこからポインタをトラバースする; 操作を行うべく構成されるようにし、前記プロセッサが、トラバースすべきさら
なる他のポインタがなくなるまで前記操作b)を繰り返して、これにて識別され
るオブジェクトに対する記憶済みの部類識別子がマーク付きの識別子としてセッ
トされるようにし、前記ヒープのデータオブジェクトの幾つかのものがファイナ
ライザをキャリーし、且つ他のさらなる幾つかのオブジェクトは、オブジェクト
をペンディングのオブジェクトとして分類するファイナライザによって潜在的に
到達可能なオブジェクトとして識別されるようにしたデータ処理装置において、
前記プロセッサが、ファイナライザをキャリーしているヒープメモリのオブジェ
クトの第1総数を保持している手段に結合され、且つ該プロセッサが、各トラバ
ースに対して、ファイナライザをキャリーしているオブジェクトの検出総数が、
前記第1保持総数以下の場合に、別のスィープ操作に着手して、残りのファイナ
ライザ−到達可能オブジェクトに対するルートオブジェクトを識別すると共に、
マークを付け、また、前記検出したオブジェクトの総数が第1保持総数と一致す
る場合には、さらなる他のスウィープ操作に着手しないで、いずれも削除可能な
ペンディングオブジェクトとして再分類すべく構成されるようにしたことを特徴
とするデータ処理装置にもある。
【0009】 作動に当たり、ヒープメモリにおけるファイナライザをキャリーしているデー
タオブジェクトが、セットされた際に、これらのオブジェクトが削除可能なオブ
ジェクトとして再分類されなくするそれぞれのフラグを含むようにするのが好適
である。このような配置では、前記オブジェクトの第1保持総数を前記フラグの
設定時にインクリメントさせ、且つその削除時にデクリメントさせるのが好適で
ある。インクリメンタルガーベジコレクションにてあり得る、スィープの進展に
つれて変化するファイナライザをキャリーしているヒープメモリのオブジェクト
の発生数に対処するために、スィープ操作中に検出される進行中のマーク付きオ
ブジェクトの第2総数を保持し、且つスィープの終了時に前記第2総数値を、前
記第1総数値と比較する前に、ファイナライザをキャリーしているオブジェクト
の検出総数から差し引くことができる。
タオブジェクトが、セットされた際に、これらのオブジェクトが削除可能なオブ
ジェクトとして再分類されなくするそれぞれのフラグを含むようにするのが好適
である。このような配置では、前記オブジェクトの第1保持総数を前記フラグの
設定時にインクリメントさせ、且つその削除時にデクリメントさせるのが好適で
ある。インクリメンタルガーベジコレクションにてあり得る、スィープの進展に
つれて変化するファイナライザをキャリーしているヒープメモリのオブジェクト
の発生数に対処するために、スィープ操作中に検出される進行中のマーク付きオ
ブジェクトの第2総数を保持し、且つスィープの終了時に前記第2総数値を、前
記第1総数値と比較する前に、ファイナライザをキャリーしているオブジェクト
の検出総数から差し引くことができる。
【0010】 (発明を実施するための最良の形態) 本発明をより詳細に説述するために、添付の図面に従ってこれを説明する。
【0011】 図1は、例えば、仮想環境を規定するデータ用のブラウザとしてシステムを構
成し得る多数のソフトウエアユ−ティリティ用のホストとして作用するパーソナ
ルコンピュータの如きデータ処理システムを示す。このシステムはアドレス兼デ
ータバス12を介してランダムアクセス(RAM)14及び読取専用(ROM)メモリ16に結合
される中央処理ユニット(CPU)10を具えている。これらのメモリは1個又は数個の
集積回路デバイスで構成することができ、且つシステムハードディスク並びにCD
-ROMのような追加の(取外し可能な)メモリデバイスから読取る手段によって増
やすことができる。CPU10にはバス12を介して第1及び第2ユーザ入力デバイス18,
20も結合され、これらの入力デバイスはキーボード及びマウス又はトラックボー
ルのようなカーソル制御兼選択デバイスで構成するのが好適である。システムか
らのオーディオ出力はオーディオ処理段24によって駆動される1個以上のスピー
カ22により出力される。システムからのビデオ出力は、CPU10の制御のもとで表
示駆動段28によって駆動される表示スクリーン26に提示される。このシステムに
対する他のデータソースは、例えばインターネットによるような、遠隔サイトへ
のオンラインリンクによるものであり、このためにシステムにはバス12に結合さ
せるネットワークインタフェース30を設けてある。
成し得る多数のソフトウエアユ−ティリティ用のホストとして作用するパーソナ
ルコンピュータの如きデータ処理システムを示す。このシステムはアドレス兼デ
ータバス12を介してランダムアクセス(RAM)14及び読取専用(ROM)メモリ16に結合
される中央処理ユニット(CPU)10を具えている。これらのメモリは1個又は数個の
集積回路デバイスで構成することができ、且つシステムハードディスク並びにCD
-ROMのような追加の(取外し可能な)メモリデバイスから読取る手段によって増
やすことができる。CPU10にはバス12を介して第1及び第2ユーザ入力デバイス18,
20も結合され、これらの入力デバイスはキーボード及びマウス又はトラックボー
ルのようなカーソル制御兼選択デバイスで構成するのが好適である。システムか
らのオーディオ出力はオーディオ処理段24によって駆動される1個以上のスピー
カ22により出力される。システムからのビデオ出力は、CPU10の制御のもとで表
示駆動段28によって駆動される表示スクリーン26に提示される。このシステムに
対する他のデータソースは、例えばインターネットによるような、遠隔サイトへ
のオンラインリンクによるものであり、このためにシステムにはバス12に結合さ
せるネットワークインタフェース30を設けてある。
【0012】 本発明は特に、CPU10の制御のもとでRAM14の作業域に対する記憶域を管理す
ることにあり;このための制御プログラムは最初はROM16に保持させて、電源投
入時にオペレーティングシステムでロードアップさせることができる。次の例は
、Java((R)Sun Microsystems社)仮想マシンにおける同時並行ガーベジコ
レクション及び記憶域管理法に迎合的なものであり、用語はそれ相当に解釈すべ
きであるが、本発明はJava迎合システム、同時並行(又はインクリメンタル)ガー
ベジコレクションに限定されるものでもなければ、仮想の記憶域管理そのものに
限定されるものでもない。
ることにあり;このための制御プログラムは最初はROM16に保持させて、電源投
入時にオペレーティングシステムでロードアップさせることができる。次の例は
、Java((R)Sun Microsystems社)仮想マシンにおける同時並行ガーベジコ
レクション及び記憶域管理法に迎合的なものであり、用語はそれ相当に解釈すべ
きであるが、本発明はJava迎合システム、同時並行(又はインクリメンタル)ガー
ベジコレクションに限定されるものでもなければ、仮想の記憶域管理そのものに
限定されるものでもない。
【0013】 次に、特殊な意味を有している多数の特定な用語は次のような意味合いで用い
るものとする。ルート(root)オブジェクトとは、システムにおけるグローバルに
アクセス可能な記憶済みのデータオブジェクトのことであり、Javaではこれらの
オブジェクトを静的データフィールド及びスタックとして表現している。到達可
能(reachable)オブジェクトとは、システムのルートオブジェクトが筆頭にある
データ構造に連接である記憶済みのデータオブジェクトのことであり:ガーベジ
コレクションの期間中には、マーク付けプロセスが1つのガーベジコレクション
サイクルにて全ての到達可能オブジェクトを見つける。非到達可能オブジェクト
とは、斯様なデータ構造に連接しない記憶済みのデータオブジェクトのことであ
り、これらのオブジェクトは実行プログラムにアクセスすることができず、従っ
てガ‐べジコレクションに対する候補となるものである。
るものとする。ルート(root)オブジェクトとは、システムにおけるグローバルに
アクセス可能な記憶済みのデータオブジェクトのことであり、Javaではこれらの
オブジェクトを静的データフィールド及びスタックとして表現している。到達可
能(reachable)オブジェクトとは、システムのルートオブジェクトが筆頭にある
データ構造に連接である記憶済みのデータオブジェクトのことであり:ガーベジ
コレクションの期間中には、マーク付けプロセスが1つのガーベジコレクション
サイクルにて全ての到達可能オブジェクトを見つける。非到達可能オブジェクト
とは、斯様なデータ構造に連接しない記憶済みのデータオブジェクトのことであ
り、これらのオブジェクトは実行プログラムにアクセスすることができず、従っ
てガ‐べジコレクションに対する候補となるものである。
【0014】 始末可能(finalisable)オブジェクトとは、これらのオブジェクトが非到達可
能オブジェクトであるので、名目上残骸(garbage)となっているも、まだ実行さ
れていない空でないファイナライザも有しているデータオブジェクトのことであ
る。ファイナライザは一度しか実行させることができないため、オブジェクトの
ファイナライザがまだガーベジコレクタによって実行されていない場合には、そ
のオブジェクトは始末可能オブジェクトと見なされる。ファイナライザ−到達可
能オブジェクトは、始末可能オブジェクトからの追跡によって到達し得る、非到
達可能オブジェクトグループのサブセットであり:これらのオブジェクトは残骸
として回収すべきオブジェクトではない。
能オブジェクトであるので、名目上残骸(garbage)となっているも、まだ実行さ
れていない空でないファイナライザも有しているデータオブジェクトのことであ
る。ファイナライザは一度しか実行させることができないため、オブジェクトの
ファイナライザがまだガーベジコレクタによって実行されていない場合には、そ
のオブジェクトは始末可能オブジェクトと見なされる。ファイナライザ−到達可
能オブジェクトは、始末可能オブジェクトからの追跡によって到達し得る、非到
達可能オブジェクトグループのサブセットであり:これらのオブジェクトは残骸
として回収すべきオブジェクトではない。
【0015】 ミューテータスレッド(mutator thread)とは、インクリメンタルガーベジ
コレクションシステムにおける実行スレッドのことであり:この名前は、記憶済
みのデータオブジェクトを保持しているヒープメモリをガーベジコレクションス
レッドで同時並行的に変化させることに由来しており、また、ガーベジコレクシ
ョンスレッドとは、その目的がガーベジオブジェクトを回収して、ヒープメモリ
に多くの空きスペースを生成することにある専用のシステムスレッドのことであ
る。ファイナライザスレッドとは、ファイナライザを有する非到達可能オブジェ
クトに対する後始末コードを実行する専用のシステムスレッドのことである。
コレクションシステムにおける実行スレッドのことであり:この名前は、記憶済
みのデータオブジェクトを保持しているヒープメモリをガーベジコレクションス
レッドで同時並行的に変化させることに由来しており、また、ガーベジコレクシ
ョンスレッドとは、その目的がガーベジオブジェクトを回収して、ヒープメモリ
に多くの空きスペースを生成することにある専用のシステムスレッドのことであ
る。ファイナライザスレッドとは、ファイナライザを有する非到達可能オブジェ
クトに対する後始末コードを実行する専用のシステムスレッドのことである。
【0016】 検出期間は、除去される或るオブジェクトへの最終リファレンス時と、非到達
可能オブジェクトとしてのその検出時との間の期間である。(マークして削除す
る)マーク−スウィープ(mark-sweep)コレクタでは、この期間はマーク付けサイ
クルの期間によって決定される。再生利用(reclamation)期間とは、或るオブジ
ェクトが非到達可能オブジェクトとして検出される時点と、そのオブジェクトが
削除される時点との間の期間のことである。マーク−スウィープガーベジコレク
タでは、この期間はスウィープサイクルの期間と、始末可能オブジェクトの存在
期間とによって決定される。
可能オブジェクトとしてのその検出時との間の期間である。(マークして削除す
る)マーク−スウィープ(mark-sweep)コレクタでは、この期間はマーク付けサイ
クルの期間によって決定される。再生利用(reclamation)期間とは、或るオブジ
ェクトが非到達可能オブジェクトとして検出される時点と、そのオブジェクトが
削除される時点との間の期間のことである。マーク−スウィープガーベジコレク
タでは、この期間はスウィープサイクルの期間と、始末可能オブジェクトの存在
期間とによって決定される。
【0017】 実例として、先ず、例えばSun Java(R)仮想マシンv1.0.2.に用いられて
いる、後始末するガーベジコレクション用に通常用いられる方法について考察す
る。代表的な非-後始末ガーベジコレクションサイクルは、インプリメンテーシ
ョンディテールとは無関係に、先ずヒープを到達可能及び非到達可能なデータオ
ブジェクトのセットに区分してから、非到達可能な(データオブジェクトの)セ
ットをガーベジコレクションするものと見なすことができる。この場合の後始末
は、ヒープを前のように、到達可能及び非到達可能なデータオブジェクトのセッ
トに区分するように、新たな段を各ガーベジコレクションに加えることによって
ガーベジコレクションを複雑にしている。この後に、非到達可能セットをガーベ
ジ及びファイナライザ−到達可能セットに区分し、最後にガーベジセットでガー
ベジコレクションを実施し、且つファイナライザの実行をファイナライザ−到達
可能セットで実施させる。
いる、後始末するガーベジコレクション用に通常用いられる方法について考察す
る。代表的な非-後始末ガーベジコレクションサイクルは、インプリメンテーシ
ョンディテールとは無関係に、先ずヒープを到達可能及び非到達可能なデータオ
ブジェクトのセットに区分してから、非到達可能な(データオブジェクトの)セ
ットをガーベジコレクションするものと見なすことができる。この場合の後始末
は、ヒープを前のように、到達可能及び非到達可能なデータオブジェクトのセッ
トに区分するように、新たな段を各ガーベジコレクションに加えることによって
ガーベジコレクションを複雑にしている。この後に、非到達可能セットをガーベ
ジ及びファイナライザ−到達可能セットに区分し、最後にガーベジセットでガー
ベジコレクションを実施し、且つファイナライザの実行をファイナライザ−到達
可能セットで実施させる。
【0018】 このようにサイクルが長くなることは、オブジェクトが非到達可能オブジェク
トとなる時点と、それらの回収時点との間の遅延を大きくすることになり、従っ
て、ヒープの大部分がガーベジオブジェクトによって使用されてしまうために、
新規のデータアイテムに利用できるヒープの領域が小さくなる。また、サイクル
のそれぞれの段間の強い依存性は、ガーベジコレクションアルゴリズムを進める
際に、ミューテータスレッドでのポーズ期間が大きくなり、殆どのインプリメン
テーションの同時実行特性が劣ることになる。代表的なシステムにおける始末可
能オブジェクトの数はアクティブオブジェクトのセットのうちの僅かな割合であ
ることを考えると、ファイナライザ支援の追加したオーバヘッドは不釣合いに大
きなものである。システムにおける各オブジェクトの状態は、2つの変数M及びF
によって識別され、ここに、MはMarked(他のマーク状態を含む)又はUnmarkedと
することができ、FはFinaliser又はNoFinaliserを示すものとすることができる。
トとなる時点と、それらの回収時点との間の遅延を大きくすることになり、従っ
て、ヒープの大部分がガーベジオブジェクトによって使用されてしまうために、
新規のデータアイテムに利用できるヒープの領域が小さくなる。また、サイクル
のそれぞれの段間の強い依存性は、ガーベジコレクションアルゴリズムを進める
際に、ミューテータスレッドでのポーズ期間が大きくなり、殆どのインプリメン
テーションの同時実行特性が劣ることになる。代表的なシステムにおける始末可
能オブジェクトの数はアクティブオブジェクトのセットのうちの僅かな割合であ
ることを考えると、ファイナライザ支援の追加したオーバヘッドは不釣合いに大
きなものである。システムにおける各オブジェクトの状態は、2つの変数M及びF
によって識別され、ここに、MはMarked(他のマーク状態を含む)又はUnmarkedと
することができ、FはFinaliser又はNoFinaliserを示すものとすることができる。
【0019】 簡単なシステムにおけるガーベジコレクタ及びそれらの相互作用に関連する別
個のタスクを図2に示してある。ミューテータスレッドMUは新規のオブジェクト
をいつでもヒープに生成することができる。マーク付け段MAはルートオブジェク
トからのオブジェクトを追跡する。この追跡によって見つけたオブジェクトはM
=Markedを有し、マーク付けをガーベジコレクションスレッドか、又は図示のイ
ンクリメンタルガーベジコレクションの場合には、ミューテータスレッドにて行
うことができる。ファイナライザの区分化F-Pは、ヒープをスウィープして、待
ち行列にM=Unmarked及びF=Finaliserを有するオブジェクトを入れることであ
り、次ぎに始末可能オブジェクトをルートオブジェクトとして用いるマークフェ
ーズを行う。これはガーベジコレクションGCスレッドにて実行する。後始末段FS
は待ち行列におけるファイナライザを実行させ、この実行後にF=NoFinaliserの
オブジェクトをセットする。これはガーベジコレクションGCスレッド又は図示の
ように専用のファイナライザスレッドFSで実行させることができる。
個のタスクを図2に示してある。ミューテータスレッドMUは新規のオブジェクト
をいつでもヒープに生成することができる。マーク付け段MAはルートオブジェク
トからのオブジェクトを追跡する。この追跡によって見つけたオブジェクトはM
=Markedを有し、マーク付けをガーベジコレクションスレッドか、又は図示のイ
ンクリメンタルガーベジコレクションの場合には、ミューテータスレッドにて行
うことができる。ファイナライザの区分化F-Pは、ヒープをスウィープして、待
ち行列にM=Unmarked及びF=Finaliserを有するオブジェクトを入れることであ
り、次ぎに始末可能オブジェクトをルートオブジェクトとして用いるマークフェ
ーズを行う。これはガーベジコレクションGCスレッドにて実行する。後始末段FS
は待ち行列におけるファイナライザを実行させ、この実行後にF=NoFinaliserの
オブジェクトをセットする。これはガーベジコレクションGCスレッド又は図示の
ように専用のファイナライザスレッドFSで実行させることができる。
【0020】 この技法は幾つかの劣る特性を呈し、先ずは、順次発生するマーク付けMA、フ
ァイナライザ区分化F-P及びガーベジコレクションスウィープGCのそれぞれのス
テップの同時実行性が劣る。従って、タスク間の本来の独立性をマルチ-スレデ
ッドシステムにて活用することができない。他の問題は、全てのオブジェクトに
対する再生利用時間が長くなることにある。非アナライザ−到達可能ガーベジ(
殆どがそうである)に対しては、ファイナライザの区分化F-Pが完了するまでこの
サイクルにてガーベジは回収されない。これは、オブジェクトをファイナライザ
の区分化F-P中にもう試験してあるので無駄なことである。インクリメンタルガ
ーベジコレクションのアルゴリズムでは、ミューテータ用並びにファイナライザ
区分化F-P及びガーベジコレクションGCスウィープが生じるシステムのポーズ期
間が、ヒープと、ファイナライザ-到達可能マーク付けフェーズとにわたる2度の
完全なスウィープを行うことによって、不所望に長くなる。
ァイナライザ区分化F-P及びガーベジコレクションスウィープGCのそれぞれのス
テップの同時実行性が劣る。従って、タスク間の本来の独立性をマルチ-スレデ
ッドシステムにて活用することができない。他の問題は、全てのオブジェクトに
対する再生利用時間が長くなることにある。非アナライザ−到達可能ガーベジ(
殆どがそうである)に対しては、ファイナライザの区分化F-Pが完了するまでこの
サイクルにてガーベジは回収されない。これは、オブジェクトをファイナライザ
の区分化F-P中にもう試験してあるので無駄なことである。インクリメンタルガ
ーベジコレクションのアルゴリズムでは、ミューテータ用並びにファイナライザ
区分化F-P及びガーベジコレクションGCスウィープが生じるシステムのポーズ期
間が、ヒープと、ファイナライザ-到達可能マーク付けフェーズとにわたる2度の
完全なスウィープを行うことによって、不所望に長くなる。
【0021】 こうした遅延を減らすために、マルチスレッディングをもっと有効に使用すると
共に、ファイナライザを有効に取り扱うことのできるようにするスレッド間の区
分化タスクの別の方法が必要である。最初の改善は、マーク付け及びスウィーピ
ング状態をパイプライン制御することにより達成され、これは「インクリメンタ
ルガーベジコレクタでの後始末」なる名称で、英国特許出願9813264.0
を優先権主張した本願人の同時係続の米国出願に記載してあるように、MをMarke
d(マーク付き)、Unmarked(マーク付でない)、Pending(ペンディング)又はDele
table(削除可能)とし得るようにマーク状態の数を増やすことによって得られ、M
を記憶させるのにオブジェクト当り必要なビット数はわずか2ビットで済む。他
の例として、図3は斯かる4マーク状態配置におけるマーク付け及びスウィーピ
ングの同時並行性を示す。例えば、図2の場合のように、ミューテータMUはヒー
プのオブジェクトを変更したり、又は新たなオブジェクトを生成したりし、また
、ミュータの取り扱いと連絡しあってマーク付けフェーズMAが、ルートオブジェ
クトからアクセス可能なオブジェクトにマークする。M=Markedは、完了時に生
じる同期点SP(これについては後に説明する)で見つけたオブジェクトにセットす
る。これは任意のスレッドにて行うことができる。
共に、ファイナライザを有効に取り扱うことのできるようにするスレッド間の区
分化タスクの別の方法が必要である。最初の改善は、マーク付け及びスウィーピ
ング状態をパイプライン制御することにより達成され、これは「インクリメンタ
ルガーベジコレクタでの後始末」なる名称で、英国特許出願9813264.0
を優先権主張した本願人の同時係続の米国出願に記載してあるように、MをMarke
d(マーク付き)、Unmarked(マーク付でない)、Pending(ペンディング)又はDele
table(削除可能)とし得るようにマーク状態の数を増やすことによって得られ、M
を記憶させるのにオブジェクト当り必要なビット数はわずか2ビットで済む。他
の例として、図3は斯かる4マーク状態配置におけるマーク付け及びスウィーピ
ングの同時並行性を示す。例えば、図2の場合のように、ミューテータMUはヒー
プのオブジェクトを変更したり、又は新たなオブジェクトを生成したりし、また
、ミュータの取り扱いと連絡しあってマーク付けフェーズMAが、ルートオブジェ
クトからアクセス可能なオブジェクトにマークする。M=Markedは、完了時に生
じる同期点SP(これについては後に説明する)で見つけたオブジェクトにセットす
る。これは任意のスレッドにて行うことができる。
【0022】 スウィーピング段GCはヒープを横切る線形スウィープから成り、これにてM=D
eletableのオブジェクト(検出した非到達可能オブジェクト)を点D1にて削除し
、また、M=Pending及びF=Finaliserのオブジェクトをファイナライザの待ち行
列に入れて、マークする。スウィーピングはGC1で示すようにガーベジコレクシ
ョンのスレッドにて行ない、その完了時に同期点SPを待つようにする。後始末段
はファイナライザの待ち行列におけるオブジェクトに対するファイナライザを実
行し、且つ点D2での実行後にF=No Finaliserをセットする。後始末はガーベジ
コレクションスレッド又は専用の後始末スレッドにて行われる。
eletableのオブジェクト(検出した非到達可能オブジェクト)を点D1にて削除し
、また、M=Pending及びF=Finaliserのオブジェクトをファイナライザの待ち行
列に入れて、マークする。スウィーピングはGC1で示すようにガーベジコレクシ
ョンのスレッドにて行ない、その完了時に同期点SPを待つようにする。後始末段
はファイナライザの待ち行列におけるオブジェクトに対するファイナライザを実
行し、且つ点D2での実行後にF=No Finaliserをセットする。後始末はガーベジ
コレクションスレッド又は専用の後始末スレッドにて行われる。
【0023】 このような方法は、マークフェーズの結果をスウィーピングフェーズに通す(
上述したような)同期点を含むものである。次のマークフェーズ及びスウィープ
サイクルは共に、同期点SPの後に直ぐに開始させることができ:スウィープスレ
ッドは図示のように同期点SPの開始時に開始させることができるも、それは実際
のスウィープが開始する時点をSPが結論付けるまでの状態変化等の如き処理事項
である。同期点そのものは次のような操作を行う。
上述したような)同期点を含むものである。次のマークフェーズ及びスウィープ
サイクルは共に、同期点SPの後に直ぐに開始させることができ:スウィープスレ
ッドは図示のように同期点SPの開始時に開始させることができるも、それは実際
のスウィープが開始する時点をSPが結論付けるまでの状態変化等の如き処理事項
である。同期点そのものは次のような操作を行う。
【0024】 1.全てのオブジェクトに対してMを循環又はシフトさせる:この操作は、Mar
kedを示す記憶コード(例えば2進数の10)を、循環させることによりUnmarked
を示すべくシステム認識を変換させ、Unmarkedに対してはPendingに、Pendingに
対してはDeletableに同様に変換させる。オブジェクトの全てにわたるスウィー
プ及びそれぞれの記憶済みのマーク状態ビットの全ての変更を必要とするという
よりもむしろ、この操作はマーク状態ビットの意味を循環又はシフトさせること
によって行う。
kedを示す記憶コード(例えば2進数の10)を、循環させることによりUnmarked
を示すべくシステム認識を変換させ、Unmarkedに対してはPendingに、Pendingに
対してはDeletableに同様に変換させる。オブジェクトの全てにわたるスウィー
プ及びそれぞれの記憶済みのマーク状態ビットの全ての変更を必要とするという
よりもむしろ、この操作はマーク状態ビットの意味を循環又はシフトさせること
によって行う。
【0025】 2.現行の後始末待ち行列におけるオブジェクトを含む新規のルートオブジェ
クトを次ぎのマークフェーズ用に割当てる。
クトを次ぎのマークフェーズ用に割当てる。
【0026】 新規のマーク状態に、これらの状態を循環させる有効な方法を一緒に加えるこ
とによって、ファイナライザ-到達可能オブジェクトの走査及びガーベジオブジ
ェクトの走査をソフトウエアでパイプライン制御することができる。Unmarkedオ
ブジェクトをDeletable状態(図3の点D3)に動かすのに2ガーベジコレクション
サイクルを要し、これは介在するマークフェーズにてファイナライザ−到達可能
オブジェクトを検出するのに十分な長さである。ルートオブジェクトのマーク付
けとファイナライザ-到達可能オブジェクトのマーク付けとの併合が、コードサ
イズを小さくし、しかもファイナライザ-到達可能オブジェクトを分けるファイ
ナライザの区分化(図2のF-P)の必要性をなくす。短い同期点SPはミューテータ
スレッドを阻止する点に過ぎない。従って、この方法はスウィープ、ファイナラ
イザ及びミューテータスレッドが高い独立性を持って作動するので、優れたイン
クリメンタル兼マルチスレッディングパーフォーマンスを呈する。各サイクルは
僅か1つのマークフェーズとこれと同時に作動する1つのスウィープフェーズとか
ら成るので、サイクル時間も短かくなる。このため及びマーク付けプロセスがア
クティブとなるサイクルの割合が高くなるため、非リファレンスオブジェクトに
対する検出期間も同様に短くなる。
とによって、ファイナライザ-到達可能オブジェクトの走査及びガーベジオブジ
ェクトの走査をソフトウエアでパイプライン制御することができる。Unmarkedオ
ブジェクトをDeletable状態(図3の点D3)に動かすのに2ガーベジコレクション
サイクルを要し、これは介在するマークフェーズにてファイナライザ−到達可能
オブジェクトを検出するのに十分な長さである。ルートオブジェクトのマーク付
けとファイナライザ-到達可能オブジェクトのマーク付けとの併合が、コードサ
イズを小さくし、しかもファイナライザ-到達可能オブジェクトを分けるファイ
ナライザの区分化(図2のF-P)の必要性をなくす。短い同期点SPはミューテータ
スレッドを阻止する点に過ぎない。従って、この方法はスウィープ、ファイナラ
イザ及びミューテータスレッドが高い独立性を持って作動するので、優れたイン
クリメンタル兼マルチスレッディングパーフォーマンスを呈する。各サイクルは
僅か1つのマークフェーズとこれと同時に作動する1つのスウィープフェーズとか
ら成るので、サイクル時間も短かくなる。このため及びマーク付けプロセスがア
クティブとなるサイクルの割合が高くなるため、非リファレンスオブジェクトに
対する検出期間も同様に短くなる。
【0027】 作動に当り、ガーベジコレクションのスウィープは、それがPending状態にお
けるオブジェクトを横切る際にファイナライザ−到達可能セットのマーク付けを
トリガする。従って、スウィーパは、ヒープ外に保持される独立のルートセット
によってマーカを駆動させる慣例のマーク-スウィーププロセスに比べてマーク
付けプロセスを有効に行う。
けるオブジェクトを横切る際にファイナライザ−到達可能セットのマーク付けを
トリガする。従って、スウィーパは、ヒープ外に保持される独立のルートセット
によってマーカを駆動させる慣例のマーク-スウィーププロセスに比べてマーク
付けプロセスを有効に行う。
【0028】 プロセスに対する再生利用期間をもっと高くすると言う点で、まだ満足の行か
ない点がある。ガーベジオブジェクトは、これらが非到達可能オブジェクトとし
て認識される同期点(UnmarkedからPendingへの状態遷移)から2サイクル以内
に回収される。殆どのサイクルにおいて、新規の始末可能なオブジェクトが非到
達可能オブジェクトになることはなく、これらのサイクルでは、全てのPending
オブジェクトが次ぎのサイクルでDeletableオブジェクトとなるため、これらの
オブジェクトはPendingサイクルにて理論上削除することができる。これはPendi
ng状態におけるファイナライザオブジェクトの特殊な特性から来るのであり、本
発明ではこの特性を利用して、図3につき上述したようなインクリメンタルなシ
ステムにて、マークしてからスィープ(削除)する操作をもっと良くするように、
ファイナライザに対するガーベジコレクションの効率を改善することにある。
ない点がある。ガーベジオブジェクトは、これらが非到達可能オブジェクトとし
て認識される同期点(UnmarkedからPendingへの状態遷移)から2サイクル以内
に回収される。殆どのサイクルにおいて、新規の始末可能なオブジェクトが非到
達可能オブジェクトになることはなく、これらのサイクルでは、全てのPending
オブジェクトが次ぎのサイクルでDeletableオブジェクトとなるため、これらの
オブジェクトはPendingサイクルにて理論上削除することができる。これはPendi
ng状態におけるファイナライザオブジェクトの特殊な特性から来るのであり、本
発明ではこの特性を利用して、図3につき上述したようなインクリメンタルなシ
ステムにて、マークしてからスィープ(削除)する操作をもっと良くするように、
ファイナライザに対するガーベジコレクションの効率を改善することにある。
【0029】 図3につき上述した4つのマーク状態法に対する改良として、Pending状態にお
けるオブジェクトを間違いなく削除し得るかどうかを確実に検出する手段をさら
に設ける例につき説明する。このプロシージャは、マーク付け中に見つけたファ
イナライザを有するオブジェクトの数を追跡し、且つこれを、ヒープに割当てら
れている既知の記憶済みのオブジェクトの総数と比較することによって行われる
。後始末待ち行列はマーク付けプロセスに含まれるので、マーク付け中に突止め
られない始末可能なオブジェクトだけが、以前の回収サイクル中に非到達可能オ
ブジェクトとなったオブジェクトになる。必ずしも全ての始末可能なオブジェク
トが以前のマークフェーズになかった場合に、スウィープにて識別する空ではな
いファイナライザ-到達可能オブジェクトのセットが存在する。しかし、全ての
始末可能なオブジェクトを考慮する場合には、すべてのPendingオブジェクトが
ガーベジオブジェクトであることがわかり、直ちに削除することができる。
けるオブジェクトを間違いなく削除し得るかどうかを確実に検出する手段をさら
に設ける例につき説明する。このプロシージャは、マーク付け中に見つけたファ
イナライザを有するオブジェクトの数を追跡し、且つこれを、ヒープに割当てら
れている既知の記憶済みのオブジェクトの総数と比較することによって行われる
。後始末待ち行列はマーク付けプロセスに含まれるので、マーク付け中に突止め
られない始末可能なオブジェクトだけが、以前の回収サイクル中に非到達可能オ
ブジェクトとなったオブジェクトになる。必ずしも全ての始末可能なオブジェク
トが以前のマークフェーズになかった場合に、スウィープにて識別する空ではな
いファイナライザ-到達可能オブジェクトのセットが存在する。しかし、全ての
始末可能なオブジェクトを考慮する場合には、すべてのPendingオブジェクトが
ガーベジオブジェクトであることがわかり、直ちに削除することができる。
【0030】 オブジェクトの状態は図3の例のようにするが、つぎの3つの新規のグローバル
な変数を加える。 Finaliser count ヒープにおける始末可能なオブジェクトの総数のカウ ント値 found count マーク付けプロセス中に突止められるファイナライザ ー到達可能オブジェクトの数 shortcut スウィーププロセスをこのサイクルにて如何様にする かを示すフラグ
な変数を加える。 Finaliser count ヒープにおける始末可能なオブジェクトの総数のカウ ント値 found count マーク付けプロセス中に突止められるファイナライザ ー到達可能オブジェクトの数 shortcut スウィーププロセスをこのサイクルにて如何様にする かを示すフラグ
【0031】 タスクはほぼ図3の例のように行うが、図4に示したように幾つかの例外がある
。ミューテータの場合に、新規のオブジェクトがF=Finaliserを有する場合に、
変数のFinaliser countをインクリメントさせる。マーク付け中に、或る見つ
けたオブジェクトがF=Finaliserを有する場合には、found countをインクリ
メントさせる。スウィーピング中に、変数shortcutが真である場合には、双方の
M=Pending及びM=Deletableを点Dにて削除し;変数shortcutが偽である場合に
は、M=Deletableのオブジェクトを削除し、M=Pending及びF=Finaliserのオブ
ジェクトをファイナライザの待ち行列に入れ、且つ点D6での次ぎの削除のための
マーク付けをする。後始末は前のようにするが、或るオブジェクトに対するファ
イナライザスレッドの実行後には、FをNoFinaliserにセットし、オブジェクトを
マークすると共に、変数found count及びfinaliser countの双方をデクリメントさせる。
。ミューテータの場合に、新規のオブジェクトがF=Finaliserを有する場合に、
変数のFinaliser countをインクリメントさせる。マーク付け中に、或る見つ
けたオブジェクトがF=Finaliserを有する場合には、found countをインクリ
メントさせる。スウィーピング中に、変数shortcutが真である場合には、双方の
M=Pending及びM=Deletableを点Dにて削除し;変数shortcutが偽である場合に
は、M=Deletableのオブジェクトを削除し、M=Pending及びF=Finaliserのオブ
ジェクトをファイナライザの待ち行列に入れ、且つ点D6での次ぎの削除のための
マーク付けをする。後始末は前のようにするが、或るオブジェクトに対するファ
イナライザスレッドの実行後には、FをNoFinaliserにセットし、オブジェクトを
マークすると共に、変数found count及びfinaliser countの双方をデクリメントさせる。
【0032】 同期点にて適用するプロシージャは計数変数の評価を含み、ここでは、Mの意
味を循環させ、且つルートオブジェクトを割当てた後に、変数“shortcut”をそ
の結果(found count=Finaliser count)にセットする。
味を循環させ、且つルートオブジェクトを割当てた後に、変数“shortcut”をそ
の結果(found count=Finaliser count)にセットする。
【0033】 このような技法を上述したようなインクリメンタルガーベジコレクションに適用
する場合には、変数finaliser countをマーク付けのトラバース中に変えること
ができる。ファイナライザの総数を首尾良い値とするには、変数found countがマーク付けのトラバース中に見つけられるオブジェクトを含まないよ
うにしなければならず、そうしないと比較が間違った結果を生じることになる。
こうした事をなくすために、トラバース中には、マークした始末可能なオブジェ
クトに遭遇する場合に、変数found countを1つ差し引くようにする。これとは
別に、第2の進行中のcount processed countを維持して、スィープ中に遭遇
したマーク付きのファイナライザの数を記録し、processed countをfinaliser
countと比較する前にfound countから削除することができる。
する場合には、変数finaliser countをマーク付けのトラバース中に変えること
ができる。ファイナライザの総数を首尾良い値とするには、変数found countがマーク付けのトラバース中に見つけられるオブジェクトを含まないよ
うにしなければならず、そうしないと比較が間違った結果を生じることになる。
こうした事をなくすために、トラバース中には、マークした始末可能なオブジェ
クトに遭遇する場合に、変数found countを1つ差し引くようにする。これとは
別に、第2の進行中のcount processed countを維持して、スィープ中に遭遇
したマーク付きのファイナライザの数を記録し、processed countをfinaliser
countと比較する前にfound countから削除することができる。
【0034】 図4は“shortcut”変数の使用による記憶域の追加の再生利用を図る斯かる最
適化した後始末モデルを示し:図3の方法と比較すると判るように、図4の方法で
は、ファイナライザを用いない場合の再生利用処置を1サイクルとすることがで
き、全ての非ファイナライザ-到達可能データオブジェクトに対しては最大2サイ
クルの再生利用が可能である。
適化した後始末モデルを示し:図3の方法と比較すると判るように、図4の方法で
は、ファイナライザを用いない場合の再生利用処置を1サイクルとすることがで
き、全ての非ファイナライザ-到達可能データオブジェクトに対しては最大2サイ
クルの再生利用が可能である。
【0035】 1個以上の始末可能なオブジェクトを含んでいるデータ構造が非到達可能オブ
ジェクトとなるごくまれな場合には、このサイクルにて検出される始末可能なオ
ブジェクトの数が、マーク付けプロセスと走査の進度との間の競合条件のために
不確定になる。例えば、オブジェクトF1はスウィープによって見つけられ、これ
は後始末の待ち行列に加えられ、そしてマークされる:F1は別の始末可能なオブ
ジェクトF2を参照し、このオブジェクトもこのサイクルでは非到達可能オブジェ
クトである。マーク付けアルゴリズムの性質に応じてF2には、最初のスウィープ
がそれに到達する前か、後にマーカが到達することができる。F2はスウィーパが
最初にそれに達する場合に、このサイクルにて後始末リストに加えられるだけで
ある。オブジェクトにマークするように、後始末待ち行列にこれらのオブジェク
トを入れ、或るオブジェクトがスウィープ又はマーク付けプロセスによって見つ
けられるかどうかに無関係に、そのオブジェクトに対して同じ作用を行わせるよ
うにすることもできる。
ジェクトとなるごくまれな場合には、このサイクルにて検出される始末可能なオ
ブジェクトの数が、マーク付けプロセスと走査の進度との間の競合条件のために
不確定になる。例えば、オブジェクトF1はスウィープによって見つけられ、これ
は後始末の待ち行列に加えられ、そしてマークされる:F1は別の始末可能なオブ
ジェクトF2を参照し、このオブジェクトもこのサイクルでは非到達可能オブジェ
クトである。マーク付けアルゴリズムの性質に応じてF2には、最初のスウィープ
がそれに到達する前か、後にマーカが到達することができる。F2はスウィーパが
最初にそれに達する場合に、このサイクルにて後始末リストに加えられるだけで
ある。オブジェクトにマークするように、後始末待ち行列にこれらのオブジェク
トを入れ、或るオブジェクトがスウィープ又はマーク付けプロセスによって見つ
けられるかどうかに無関係に、そのオブジェクトに対して同じ作用を行わせるよ
うにすることもできる。
【0036】 積極的なマーク付けアルゴリズムは、連接するデータ構造における低位の始末
可能オブジェクトが、データ構造のトップレベルと同じサイクル中に待ち行列に
入らないようにし、ファイナライザをセミ−トポロジカルに順序付けする。これ
は、データ構造における高レベルのオブジェクトが低レベルのものよりも大きな
到達可能なデータオブジェクトのセットを有するので、リサイクリング率を促進
し、従って削除時により多くのオブジェクトを非到達可能オブジェクトにする。
可能オブジェクトが、データ構造のトップレベルと同じサイクル中に待ち行列に
入らないようにし、ファイナライザをセミ−トポロジカルに順序付けする。これ
は、データ構造における高レベルのオブジェクトが低レベルのものよりも大きな
到達可能なデータオブジェクトのセットを有するので、リサイクリング率を促進
し、従って削除時により多くのオブジェクトを非到達可能オブジェクトにする。
【0037】 逆に、スウィーププロセス中に突止められる始末可能なオブジェクトにマーク
するのは、全ての新たな非到達可能で、始末可能なオブジェクトが後始末待ち行
列に加えられるように、スウィーププロセスが完了するまで遅延させることがで
きる。これは予測性を促進し、且つ再生利用期間の定義を増強し:非到達可能で
、始末可能なオブジェクトが前のマーク付けフェーズにて検出されない場合に、
1サイクルの再生利用を許容する。
するのは、全ての新たな非到達可能で、始末可能なオブジェクトが後始末待ち行
列に加えられるように、スウィーププロセスが完了するまで遅延させることがで
きる。これは予測性を促進し、且つ再生利用期間の定義を増強し:非到達可能で
、始末可能なオブジェクトが前のマーク付けフェーズにて検出されない場合に、
1サイクルの再生利用を許容する。
【0038】 主としてソフトウエアブラウザインプリメンテーションによって説明したが、
上述した機能的な多くの特徴部分はハードウエア、又はハードウエアとソフトウ
エアとの組合せでも同じように実現し得ることは当業者に明らかである。
上述した機能的な多くの特徴部分はハードウエア、又はハードウエアとソフトウ
エアとの組合せでも同じように実現し得ることは当業者に明らかである。
【0039】 本発明は幾多の変更を加え得ることは当業者に明らかである。このような変更
は画像処理及び/又はデータネットワークアクセス装置及びデバイス及びその構
成部品の設計、製造及び使用において既に知られており、しかもここで既に述べ
た特徴の代わりか、又はそれに加えて用いることができる他の特徴を含むものと
することができる。
は画像処理及び/又はデータネットワークアクセス装置及びデバイス及びその構
成部品の設計、製造及び使用において既に知られており、しかもここで既に述べ
た特徴の代わりか、又はそれに加えて用いることができる他の特徴を含むものと
することができる。
【図1】 本発明を具体化するのに好適なデータ処理システムのブロック図であ
る。
る。
【図2】 従来のマーク付け及びスウィープ操作を示す説明図である。
【図3】 本発明の第1実施例におけるマーク付け及びスウィープ操作を示す説
明図である。
明図である。
【図4】 本発明の第2実施例におけるマーク付け及びスウィープ操作を示す説
明図である。
明図である。
───────────────────────────────────────────────────── フロントページの続き (71)出願人 Groenewoudseweg 1, 5621 BA Eindhoven, Th e Netherlands Fターム(参考) 5B060 AA10 【要約の続き】 は、マークした非到達可能オブジェクトをいずれも一度 のパスで削除する(D5)ことができる。
Claims (7)
- 【請求項1】 連続ヒープメモリにおけるポインタを識別することによってリン
クされているデータオブジェクトから成るデータ構造を、削除可能オブジェクト
として分類されるデータオブジェクトのガーベジコレクションでトラバースする
ためのガーベジコレクション兼マーク付け法であって、該方法が: a)或る選択したルートオブジェクトに対して、該オブジェクトによってキャリ
ーされるポインタをトラバースして、該ルートオブジェクトにリンクされるオブ
ジェクトを特定するステップ;及び b)前のステップによって識別したオブジェクトにリンクされるさらなる他のオ
ブジェクトを特定すべくポインタをトラバースするステップ; を具えており、トラバースすべきさらなる他のポインタがなくなるまで前記ステ
ップb)を繰り返して、これにて識別されるオブジェクトをマーク付きオブジェ
クトとして分類し、前記ヒープメモリにおけるデータオブジェクトの幾つかのも
のがファイナライザをキャリーし、且つ他のさらなる幾つかのオブジェクトが、
これらのオブジェクトがペンディングオブジェクトとして分類されるファイナラ
イザによって、潜在的に到達可能なオブジェクトとして識別されるようにするガ
ーベジコレクション兼マーク付け方法において、ヒープにおけるファイナライザ
をキャリーしているオブジェクトの第1総数を保持し、各トラバースに対して、
ファイナライザをキャリーしているオブジェクトの検出総数が、第1保持総数以
下の場合には別のスィープ操作に着手して、残りのファイナライザ−到達可能オ
ブジェクトに対するルートオブジェクトを識別して、マークを付け、また、前記
検出したオブジェクトの総数が第1保持総数と一致する場合には、ペンディング
オブジェクトとして分類されるそれらのオブジェクトを、さらなる他のスウィー
プ操作に着手しないで、削除可能なオブジェクトとして直ちに再分類することを
特徴とするガーベジコレクション兼マーク付け方法。 - 【請求項2】 ヒープメモリにおけるファイナライザをキャリーしているデータ
オブジェクトが、セットされた際に、これらのオブジェクトが削除可能なオブジ
ェクトとして再分類されなくするそれぞれのフラグを含むことを特徴とする請求
項1に記載の方法。 - 【請求項3】 前記最初に保持したオブジェクトの総数を前記フラグの設定時に
インクリメントさせ、且つその削除時にデクリメントさせることを特徴とする請
求項2に記載の方法。 - 【請求項4】 ファイナライザをキャリーしており、且つトラバース中に突きと
めた際にペンディングオブジェクトとして分類されたヒープのデータオブジェク
トを、これらオブジェクトのファイナライザを実行させるための後始末待ち行列
に入れることを特徴とする請求項1に記載の方法。 - 【請求項5】 スィープ中に検出される進行中のマーク付き始末可能オブジェク
トの第2総数を保持し、且つスィープ操作の終了時に前記第2総数値を、前記第
1総数値と比較する前に、ファイナライザをキャリーしているオブジェクトの検
出総数から差し引くことを特徴とする請求項1に記載の方法。 - 【請求項6】 ポインタを識別することによってデータ構造内でリンクされ、し
かもメモリの連続領域におけるヒープ内に複数のデータオブジェクトを包含して
いるランダムアクセスメモリと結合されるデータプロセッサを具えているデータ
処理装置であって、該装置がさらに、マーク付けする部類の或る予定したオブジ
ェクト組のうちの1つのオブジェクトに対する識別子を各ヒープのオブジェクト
に対して包含している追加の第1記憶手段も具えており、且つ前記プロセッサが
、記憶済みの複数個のデータオブジェクトに対して次ぎのような操作、即ち、 a)或る選択したルートオブジェクトに対して、該オブジェクトによってキャリ
ーされるポインタをトラバースして、該ルートオブジェクトにリンクされている
オブジェクトを特定し;且つ b)それらの識別したオブジェクトにリンクされるさらなる他のオブジェクトを
特定すべくそこからポインタをトラバースする; 操作を行うべく構成されるようにし、前記プロセッサが、トラバースすべきさら
なる他のポインタがなくなるまで前記操作b)を繰り返して、これにて識別され
るオブジェクトに対する記憶済みの部類識別子がマーク付きの識別子としてセッ
トされるようにし、前記ヒープのデータオブジェクトの幾つかのものがファイナ
ライザをキャリーし、且つ他のさらなる幾つかのオブジェクトは、こららのオブ
ジェクトをペンディングのオブジェクトとして分類するファイナライザによって
潜在的に到達可能なオブジェクトとして識別されるようにしたデータ処理装置に
おいて、前記プロセッサが、ファイナライザをキャリーしているヒープメモリの
オブジェクトの第1総数を保持している手段に結合され、且つ該プロセッサが、
各トラバース操作に対して、ファイナライザをキャリーしているオブジェクトの
検出総数が、第1保持総数以下の場合に、別のスィープ操作に着手して、残りの
ファイナライザ−到達可能オブジェクトに対するルートオブジェクトを識別する
と共に、マーク付けし、また、前記検出したオブジェクトの総数が第1保持総数
と一致する場合には、さらなる他のスウィープ操作に着手しないで、いずれも削
除可能なペンディングオブジェクトとして再分類すべく構成されるようにしたこ
とを特徴とするデータ処理装置。 - 【請求項7】 前記プロセッサが、削除可能と既に分類したオブジェクトを削除
するのと同時に、ペンディングオブジェクトから再分類したオブジェクトを削除
すべく構成されるようにしたことを特徴とする請求項6に記載の装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB9813266.5A GB9813266D0 (en) | 1998-06-20 | 1998-06-20 | Stored data object marking for garbage collectors |
GB9813266.5 | 1998-06-20 | ||
PCT/IB1999/001088 WO1999067697A2 (en) | 1998-06-20 | 1999-06-10 | Stored data object marking for garbage collectors |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2002519750A true JP2002519750A (ja) | 2002-07-02 |
Family
ID=10834052
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000556294A Pending JP2002519750A (ja) | 1998-06-20 | 1999-06-10 | ガ−べジコレクタ用の記憶済みデータオブジェクトのマーク付け方法 |
Country Status (8)
Country | Link |
---|---|
US (1) | US6393439B1 (ja) |
EP (1) | EP1036355B1 (ja) |
JP (1) | JP2002519750A (ja) |
KR (1) | KR20010023063A (ja) |
DE (1) | DE69923657T8 (ja) |
GB (1) | GB9813266D0 (ja) |
TW (1) | TW440777B (ja) |
WO (1) | WO1999067697A2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009266113A (ja) * | 2008-04-28 | 2009-11-12 | Internatl Business Mach Corp <Ibm> | メモリ管理方法およびシステム |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7096238B2 (en) | 1999-08-19 | 2006-08-22 | Sun Microsystems, Inc. | Dynamic feedback for determining collection-set size |
US6493730B1 (en) * | 2000-10-10 | 2002-12-10 | Sun Microsystems, Inc. | Efficient object faulting with generational garbage collection |
US6999979B2 (en) * | 2002-11-05 | 2006-02-14 | Sun Microsystems, Inc. | Efficient encoding of references into a collection set |
US7035884B2 (en) * | 2002-11-05 | 2006-04-25 | Sun Microsystems, Inc. | Placement of allocation trains in the train algorithm |
US7539713B2 (en) | 2002-11-05 | 2009-05-26 | Sun Microsystems, Inc. | Allocation of likely popular objects in the train algorithm |
US7188129B2 (en) | 2002-11-15 | 2007-03-06 | Sun Microsystems, Inc. | Merging trains in a collector based on the train algorithm |
US7209935B2 (en) * | 2002-11-27 | 2007-04-24 | Sun Microsystems, Inc. | Avoiding remembered-set maintenance overhead for memory segments known to be in a collection set |
US7085790B2 (en) * | 2002-12-06 | 2006-08-01 | Sun Microsystems, Inc. | Advancing cars in trains managed by a collector based on the train algorithm |
US7143124B2 (en) | 2002-12-06 | 2006-11-28 | Sun Microsystems, Inc. | Detection of dead regions during incremental collection |
US7069280B2 (en) * | 2002-12-06 | 2006-06-27 | Sun Microsystems, Inc. | Collection-tick mechanism for a collector based on the train algorithm |
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 |
US7031990B2 (en) | 2002-12-06 | 2006-04-18 | Sun Microsystems, Inc. | Combining external and intragenerational reference-processing in a garbage collector based on the train algorithm |
US7146390B2 (en) | 2003-02-24 | 2006-12-05 | Sun Microsystems, Inc. | Staging the processing of remembered-set entries as part of collection based on the train algorithm |
US7069281B2 (en) | 2003-02-24 | 2006-06-27 | Sun Microsystems, Inc. | Efficient collocation of evacuated objects in a copying garbage collector using variably filled local allocation buffers |
US7062519B2 (en) * | 2003-02-27 | 2006-06-13 | Sun Microsystems, Inc. | Incremental scanning of enormous objects to improve scheduling and pause-time behavior of garbage collection |
US7096329B2 (en) * | 2003-02-27 | 2006-08-22 | Sun Microsystems, Inc. | Better placement of objects promoted into a generation managed by the train algorithm |
US20040186863A1 (en) * | 2003-03-21 | 2004-09-23 | Garthwaite Alexander T. | Elision of write barriers for stores whose values are in close proximity |
US7827212B2 (en) * | 2003-05-22 | 2010-11-02 | International Business Machines Corporation | System and method for improved clearing of JAVA object's variables |
US7089272B1 (en) | 2003-06-18 | 2006-08-08 | Sun Microsystems, Inc. | Specializing write-barriers for objects in a garbage collected heap |
US7149762B1 (en) | 2003-08-20 | 2006-12-12 | Sun Microsystems, Inc. | Handling futile collections in the train algorithm through selective extension of the collection set |
US7404182B1 (en) | 2003-10-03 | 2008-07-22 | Sun Microsystems, Inc. | Deferring and combining write barriers for a garbage-collected heap |
US7340494B1 (en) * | 2004-03-12 | 2008-03-04 | Sun Microsystems, Inc. | Garbage-first garbage collection |
US7636745B1 (en) * | 2004-03-12 | 2009-12-22 | Sun Microsystems, Inc. | Concurrent-marking-initiation heuristic |
US7620943B1 (en) | 2004-06-30 | 2009-11-17 | Sun Microsystems, Inc. | Using class properties to segregate objects in a generation managed by the train algorithm |
US7676801B1 (en) | 2004-08-31 | 2010-03-09 | Sun Microsystems, Inc. | Scanning of evacuated objects in a generation managed by the train algorithm |
US7321909B1 (en) | 2004-12-23 | 2008-01-22 | Sun Microsystems, Inc. | Method and apparatus for forwarding references to objects concurrently with space-incremental garbage collection |
US7650371B2 (en) * | 2006-12-14 | 2010-01-19 | Microsoft Corporation | Finalizable object usage in software transactions |
US7783681B1 (en) * | 2006-12-15 | 2010-08-24 | Oracle America, Inc. | Method and system for pre-marking objects for concurrent garbage collection |
US20080243970A1 (en) * | 2007-03-30 | 2008-10-02 | Sap Ag | Method and system for providing loitering trace in virtual machines |
US7904493B2 (en) * | 2007-03-30 | 2011-03-08 | Sap Ag | Method and system for object age detection in garbage collection heaps |
US8336033B2 (en) * | 2007-03-30 | 2012-12-18 | Sap Ag | Method and system for generating a hierarchical tree representing stack traces |
US8667471B2 (en) | 2007-03-30 | 2014-03-04 | Sap Ag | Method and system for customizing profiling sessions |
US8522209B2 (en) * | 2007-03-30 | 2013-08-27 | Sap Ag | Method and system for integrating profiling and debugging |
US8601469B2 (en) * | 2007-03-30 | 2013-12-03 | Sap Ag | Method and system for customizing allocation statistics |
US8356286B2 (en) * | 2007-03-30 | 2013-01-15 | Sap Ag | Method and system for providing on-demand profiling infrastructure for profiling at virtual machines |
US8073882B2 (en) | 2007-07-11 | 2011-12-06 | Mats Stefan Persson | Method, system and computer-readable media for managing software object handles in a dual threaded environment |
US7987215B2 (en) * | 2008-04-22 | 2011-07-26 | Microsoft Corporation | Efficiently marking objects with large reference sets |
US8522216B2 (en) | 2010-05-04 | 2013-08-27 | Oracle International Corporation | Memory leak detection |
US8504878B2 (en) * | 2010-05-04 | 2013-08-06 | Oracle International Corporation | Statistical analysis of heap dynamics for memory leak investigations |
US8473529B2 (en) | 2011-03-14 | 2013-06-25 | International Business Machines Corporation | Single pass marking of finalizable objects |
US9053017B2 (en) | 2011-09-09 | 2015-06-09 | Microsoft Technology Licensing, Llc | Managing object lifetime in a cyclic graph |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5088036A (en) * | 1989-01-17 | 1992-02-11 | Digital Equipment Corporation | Real time, concurrent garbage collection system and method |
US5321834A (en) * | 1989-11-28 | 1994-06-14 | Xerox Corporation | Method and system for reclaiming unreferenced computer memory space |
US5485613A (en) * | 1991-08-27 | 1996-01-16 | At&T Corp. | Method for automatic memory reclamation for object-oriented systems with real-time constraints |
US5392432A (en) * | 1991-08-27 | 1995-02-21 | At&T Corp. | Method for automatic system resource reclamation for object-oriented systems with real-time constraints |
US5274804A (en) * | 1991-11-20 | 1993-12-28 | Parcplace Systems | Automatic storage-reclamation postmortem finalization process |
US5784699A (en) * | 1996-05-24 | 1998-07-21 | Oracle Corporation | Dynamic memory allocation in a computer using a bit map index |
US6055612A (en) * | 1997-07-11 | 2000-04-25 | Geodesic Systems, Inc. | Incremental garbage collector with decommit barrier |
US6047295A (en) * | 1998-05-05 | 2000-04-04 | International Business Machines Corporation | Computer system, program product and method of managing weak references with a concurrent mark sweep collector |
-
1998
- 1998-06-20 GB GBGB9813266.5A patent/GB9813266D0/en not_active Ceased
-
1999
- 1999-06-10 KR KR1020007001680A patent/KR20010023063A/ko not_active Application Discontinuation
- 1999-06-10 EP EP99923792A patent/EP1036355B1/en not_active Expired - Lifetime
- 1999-06-10 DE DE69923657T patent/DE69923657T8/de not_active Expired - Fee Related
- 1999-06-10 JP JP2000556294A patent/JP2002519750A/ja active Pending
- 1999-06-10 WO PCT/IB1999/001088 patent/WO1999067697A2/en not_active Application Discontinuation
- 1999-06-21 US US09/337,845 patent/US6393439B1/en not_active Expired - Lifetime
- 1999-06-21 TW TW088110319A patent/TW440777B/zh not_active IP Right Cessation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009266113A (ja) * | 2008-04-28 | 2009-11-12 | Internatl Business Mach Corp <Ibm> | メモリ管理方法およびシステム |
Also Published As
Publication number | Publication date |
---|---|
KR20010023063A (ko) | 2001-03-26 |
WO1999067697A2 (en) | 1999-12-29 |
WO1999067697A3 (en) | 2000-04-13 |
TW440777B (en) | 2001-06-16 |
EP1036355A2 (en) | 2000-09-20 |
US6393439B1 (en) | 2002-05-21 |
EP1036355B1 (en) | 2005-02-09 |
DE69923657T2 (de) | 2006-03-23 |
DE69923657D1 (de) | 2005-03-17 |
DE69923657T8 (de) | 2006-06-08 |
GB9813266D0 (en) | 1998-08-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2002519750A (ja) | ガ−べジコレクタ用の記憶済みデータオブジェクトのマーク付け方法 | |
US6571260B1 (en) | Memory reclamation method | |
US8195721B2 (en) | System and method for deterministic garbage collection | |
US6502111B1 (en) | Method and system for concurrent garbage collection | |
US6314436B1 (en) | Space-limited marking structure for tracing garbage collectors | |
US6226653B1 (en) | Method and apparatus for performing generational garbage collection using remembered set counter | |
US6339779B1 (en) | Reference counting mechanism for garbage collectors | |
US6510440B1 (en) | Method and apparatus for performing generational garbage collection using barrier bits | |
KR20010043785A (ko) | 메모리 복구 방법 | |
US6470361B1 (en) | Method and apparatus for performing generational garbage collection using middle-aged objects | |
US6338073B1 (en) | Finalization in incremental garbage collectors | |
JP2002519752A (ja) | メモリ空間の動的割当て方法 | |
KR100722709B1 (ko) | 메모리 회수 방법 및 장치 | |
US7756912B2 (en) | Method and system for minor garbage collection in a multitasking environment | |
US20090228537A1 (en) | Object Allocation System and Method | |
US7120750B1 (en) | Method and system for handling queue overflow during in-cache garbage collection |