JP2004503869A - モジュール式ガーベッジコレクタを実現するための方法および装置 - Google Patents
モジュール式ガーベッジコレクタを実現するための方法および装置 Download PDFInfo
- Publication number
- JP2004503869A JP2004503869A JP2002511179A JP2002511179A JP2004503869A JP 2004503869 A JP2004503869 A JP 2004503869A JP 2002511179 A JP2002511179 A JP 2002511179A JP 2002511179 A JP2002511179 A JP 2002511179A JP 2004503869 A JP2004503869 A JP 2004503869A
- Authority
- JP
- Japan
- Prior art keywords
- virtual machine
- module
- machine environment
- garbage collection
- routine
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
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
-
- 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/99931—Database or file accessing
-
- 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
Abstract
【解決手段】仮想マシン環境におけるガーベッジコレクタの効率的な交換を可能にするための方法および装置が開示される。本発明の一態様では、仮想マシンを有するマルチスレッド仮想マシン環境においてメモリを再利用するためのインタフェースは、仮想マシンに関連付けられた第1のモジュールと、第1のモジュールから分離されているが第1のモジュールと調和する第2のモジュールと、を含む。第1のモジュールは、仮想マシン環境においてガーベッジコレクションプロセスを開始するための第1のルーチンと、仮想マシン環境に関連付けられたルートを走査するための第2のルーチンと、仮想マシン環境に関連付けられたオブジェクトへのルートを追跡するための第3のルーチンと、を含む。第2のモジュールは、仮想マシン環境においてヒープを初期化するための第4のルーチンと、仮想マシン環境においてオブジェクトを割り当てるための第5のルーチンと、ガーベッジコレクションプロセスを実施するための第6のルーチンと、を含む。一実施形態では、第2のモジュールは、ガーベッジコレクションプロセスのために読み出しおよび書き込みのバリアを提供するための第7のルーチンも含む。
【選択図】図1A
Description
【発明の背景】
1.発明の分野:
本発明は、一般に、オブジェクトベースシステムにおけるガーベッジコレクションのパフォーマンスに関する。本発明は、特に、各ガーベッジコレクタをサポートできるように仮想マシンを実質的に変更することによって、仮想マシンにおいて複数の異なるガーベッジコレクタを使用可能とすることに関する。
【0002】
2.関連技術の説明:
オブジェクトベース環境では、サービスの要求を満たすためにスレッドがよく用いられる。スレッドは、ストレージリソースの「スケッチパッド」であると考えられ、本質的には、コンピュータプログラム内の制御の連続的な1つの流れである。一般に、スレッドすなわち「制御スレッド」は、独立して実行可能な中央演算処理装置(CPU)命令またはプログラミング言語ステートメントのシーケンスである。マルチスレッド環境内の各スレッドは、自身の実行スタックを有しており、スタックにはメソッドの活性(アクティベーション)が存在する。当業者には明らかなように、あるスレッドに関してメソッドが活性化される場合には、そのスレッドの実行スタック上には、1つの活性が「プッシュ」される。メソッドが戻ると、すなわち不活性化されると、その活性は、実行スタックから「ポップ」される。1つのメソッドの活性は、別のメソッドを活性化することがあるため、実行スタックは、先入れ後出し法で動作する。
【0003】
複数のスレッドを維持すると共に、コンピュータシステムは、すべてのスレッドまたは1組のスレッドを定められた時間に同期化または制御することを要求するグローバルオペレーションの実施を必要とする。このようなグローバルオペレーションの一例は、ガーベッジコレクションである。当業者には明らかなように、ガーベッジコレクションは、既に活動状態でない複数のオブジェクトに関連付けられたメモリストレージを自動的に再利用することを可能にするメソッドである。
【0004】
ガーベッジコレクションは、一般に、2段階で生じる。第1の段階は、通常、既に不要な、すなわち既に使用されていない複数のオブジェクトを識別することを含む。第2の段階は、不要な複数のオブジェクトに関連付けられたストレージを再割り当てできるようにする。定められた時間においてプログラムが将来アクセスする可能性があるオブジェクトは、まだ必要とされている、すなわちアライブ状態にある。将来アクセスされないオブジェクトは、不要であり、デッド状態であると判断される。ガーベッジコレクションアルゴリズムすなわち「ガーベッジコレクタ」は、通常、プログラムがオブジェクトに向かうすべてのポインタを解放し、オブジェクトへの将来のアクセスが不可能にされた場合にのみ、そのオブジェクトがデッド状態にあると判断される。
【0005】
ガーベッジコレクタを使用したシステム(例えば仮想マシンを含むシステム)において、ガーベッジコレクタを変更したり別のガーベッジコレクタに交換したりしたい場合には、変更後または交換後のガーベッジコレクタをサポートできるように仮想マシン自体を変更しなければならない。ときには、システム内の既存のガーベッジコレクタを別のガーベッジコレクタに交換して、ガーベッジコレクションの効率、ひいてはシステムのパフォーマンスを向上させたい場合もある。ガーベッジコレクタを交換または変更するプロセスは、仮想マシンに相当な変更を加え、交換後または新たなガーベッジコレクタに適合させる必要があるため、通常、多大な時間を必要とする。
【0006】
したがって、仮想マシンに関連付けられたガーベッジコレクタを変更または交換することを可能にする比較的安価な方法および装置が望まれている。具体的には、仮想マシンシステムにおいてガーベッジコレクタを効率的に交換することを可能にする方法および装置が必要とされている。
【0007】
【発明の概要】
本発明は、仮想マシンを変更せずに、仮想マシンにおいてモジュール式ガーベッジコレクタを効率的に交換することを可能にする方法および装置に関する。本発明の一態様では、仮想マシンを有するマルチスレッド仮想マシン環境においてメモリを再利用するためのインタフェースは、仮想マシンに関連付けられた第1のモジュールと、第1のモジュールから分離されているが第1のモジュールと調和する第2のモジュールと、を含む。第1のモジュールは、仮想マシン環境においてガーベッジコレクションのプロセスを開始するための第1のルーチンと、仮想マシン環境に関連付けられたルートを走査するための第2のルーチンと、仮想マシン環境に関連付けられたオブジェクトへのルートを追跡するための第3のルーチンと、を含む。第2のモジュールは、仮想マシン環境においてヒープを初期化するための第4のルーチンと、仮想マシン環境においてオブジェクトを割り当てるための第5のルーチンと、ガーベッジコレクションプロセスを実施するための第6のルーチンと、を含む。一実施形態では、第2のモジュールは、ガーベッジコレクションプロセスのために読み出しおよび書き込みのバリアを提供するための第7のルーチンを含む。
【0008】
以下の詳細な説明および各種の図面から、本発明の様々な利点が明らかになる。
【0009】
添付の図面に関連した以下の説明を参照にすることによって、本発明が最も良く理解される。
【0010】
[発明の詳細な説明]
以下の説明では、本発明の完全な理解を促すために、多くの項目が具体的に特定されている。しかしながら、当業者には明らかなように、本発明は、これらの項目の一部または全部を具体的に特定しなくても実施可能である。そのほか、本発明が不必要に不明瞭となるのを避けるため、周知の構造または動作の詳細な説明は省略した。
【0011】
仮想マシンを変更せずに、複数の異なるガーベッジコレクタを開発可能とし、それらを容易にフレームワークにプラグ接続可能とするガーベッジコレクションフレームワークは、複数のガーベッジコレクタを使用するシステムの柔軟性を向上させる。例えば、システムの動作の効率を高め、この結果、システム全体のパフォーマンスを向上させるために、改良されたガーベッジコレクタが既存のシステムで容易に実行される。
【0012】
一実施形態では、仮想マシン環境は、仮想マシンとは実質的に分離されたメモリシステムを維持しており、走査ルーチンなどの共通のガーベッジコレクションルーチンを、アルゴリズム固有のルーチンから分離させている。仮想マシンに影響を及ぼさずにガーベッジコレクタを仮想マシン環境にプラグ接続できるようにするために、アルゴリズム固有のガーベッジコレクションルーチンは、共通すなわち共用のガーベッジコレクションルーチンから分離した状態で維持されていてもよい。
【0013】
図1Aは、仮想マシンを変更せずにガーベッジコレクタを交換することができる環境を、本発明の一実施形態に従って示す図である。環境102は、例えば仮想マシン環境であり、仮想マシン104と、仮想マシン104とは実質的に分離されたメモリシステム106と、を含んでいる。仮想マシンの一例は、図6を参照して後述される。メモリシステム106を仮想マシン104とは実質的に分離された状態で維持することによって、複数の異なるガーベッジコレクタを環境102において交換可能に使用することが容易になる。
【0014】
メモリシステム106は、共用ガーベッジコレクタコード108を含む。共用ガーベッジコレクタコード108は、ガーベッジコレクタ112などの実質的にあらゆるガーベッジコレクタがメモリシステム106において実行されることを可能にする。共用ガーベッジコレクタコード108を使用すれば、仮想マシン104を変更せずに、ガーベッジコレクタ112,114などの特定のガーベッジコレクタを、仮想マシン104において実質的に交換可能に使用することができる。図1Bに示すように、特定のガーベッジコレクタ114は、特定のガーベッジコレクタ112に代わって、メモリシステム106上でガーベッジコレクションを実施するために使用可能である。
【0015】
ガーベッジコレクタ112,114を実質的にプラグ可能とするために、ガーベッジコレクタ112,114は、共用ガーベッジコレクタコード108と調和するように書き込まれる。したがって、ガーベッジコレクタ112,114は、共用ガーベッジコレクタコード108と整合している限りは、仮想マシン104を変更せずに、実行可能である。
【0016】
共用ガーベッジコレクタコード108に加えて、メモリシステム106に関連付けられたコードすなわちメモリシステムコードは、仮想マシンが使用可能なコードであり、一般に、ヒープを初期化してオブジェクトを割り当てるコードを含む。共用ガーベッジコレクタコード108は、実質的にあらゆる適切なガーベッジコレクションの実行の際に使用されることを目的としている。共用ガーベッジコレクタコード108は、ガーベッジコレクションの安全ポイントにおいてスレッドの実行を停止させるコードと、絶対ルート(exact roots)を識別して走査するコードと、オブジェクトまたは配列の中から参照を検出して走査するコードと、特殊なオブジェクトおよびケースを処理するコードと、を含んでいてもよいが、これらに限定されない。特殊なオブジェクトおよびケースは、弱参照と、最終決定(finalization)と、ストリングの拘束(string interning)と、クラスのアップロード(class uploading)と、を含んでいてもよい。
【0017】
モジュール式すなわちプラグ可能なガーベッジコレクタが使用される仮想マシン環境は、多岐に渡っていて良いが、以下で説明される実施形態の仮想マシン環境は、カリフォルニア州パロアルトに所在のサン・マイクロシステムズによって開発されたJava(商標)仮想マシン環境である。Java(商標)環境では、モジュール式すなわちプラグ可能なガーベッジコレクションの実現形態すなわち開発者によって書き込まれた実現形態によって使用される共用ガーベッジコレクションインタフェースまたはルーチンは、ガーベッジコレクションを有効に開始させる「CVMgcStopTheWorldAndGC()」ルーチンと、絶対ガーベッジコレクションルートを走査する「CVMgcScanRoots()」ルーチンと、オブジェクトをウォークスルーする「CVMobjectWalkRefs(obj, callback)」ルーチンと、特殊オブジェクトを処理する「CVMgcScanSpecial()」ルーチンおよび「CVMgcProcessSpecialWithLivenessInfo()」ルーチンと、を含んでいても良いが、これらに限定されない。ガーベッジコレクションの実行がこのようなルーチンを利用している場合には、特定のガーベッジコレクタなどのガーベッジコレクションの実行は、仮想マシン環境に対して効率的にプラグ接続されてもよい。
【0018】
プラグ可能な特定のガーベッジコレクションの実行は、一般に、アルゴリズム固有のガーベッジコレクションコードを含む。各ガーベッジコレクションの実行は、独自のヒープレイアウトと、独自のヒープ初期化プロセスと、独自のヒープ取り外しプロセスと、を有していてもよい。また、アルゴリズム固有のコードは、特定のオブジェクト割り当てプロセスと、特定のオブジェクト再利用アルゴリズムと、特定の読み出しおよび書き込みバリアと、を有していてもよい。例えば、世代別ガーベッジコレクタに関連付けられた読み出しおよび書き込みバリアは、アルゴリズム固有のコードによって指定されてもよく、関連の仮想マシン環境による影響を実質的に受けない。一実施形態では、アルゴリズム固有のコードによって読み出しおよび書き込みバリアが提供されない場合は、それらのバリアは空であると判断される。
【0019】
一般に、アルゴリズム固有のガーベッジコレクションコードが、共用ガーベッジコレクションコードと調和すると直ちに共用ガーベッジコレクションコードによって認識されるようにするためには、アルゴリズム固有のコードに関連付けられたルーチンは、共用ガーベッジコレクションコードによって指定された名前を有する。例えば、Java(商標)環境では、アルゴリズム固有のヒープ初期化ルーチンは、「CVMgccimpInitHeap()」プロセスとして実現される。換言すれば、共用ガーベッジコレクションコードは、ヒープを初期化するために、「CVMgccimpInitHeap()」メソッドを呼び出すように構成可能である。同様に、アルゴリズム固有のオブジェクト割り当てルーチンは、「CVMgcimplAllocObject(size)」メソッドとして実現される。スレッドが停止すると実施されるアルゴリズム固有のガーベッジコレクションは、「CVMcimplGC()」メソッドとして実現される。また、アルゴリズム固有の読み出しバリアは、「CVMgcimplReadBarrierRef()」メソッドまたは「CVMgcimplReadBarrier<T>」メソッドのいずれかとして実現される。アルゴリズム固有の書き込みバリアは、「CVMgcimpWriteBarrierRef()」メソッドまたは「CVMgcimplWriteBarrier<T>」メソッドのいずれかとして実現される。
【0020】
図2は、仮想マシン全体の動作に関連する工程を、本発明の一実施形態に従って示すフローチャートである。仮想マシンは、ステップ204において、メモリの割り当てを行う。仮想マシンは、通常、メモリアロケータを使用して、必要に応じてオブジェクトにメモリを割り当てることができる。オブジェクトに割り当てる十分なメモリがない場合には、メモリアロケータは、通常、ステップ208において、メモリスペースを再利用するためにガーベッジコレクションを実施することを決断する。当業者には明らかなように、ガーベッジコレクションを使用したメモリスペースの再利用は、一般に、もうアクセスされないオブジェクトに割り当てられたメモリスペースの再利用を含む。当業者には明らかなように、メモリアロケータがガーベッジコレクションの実施を決断する場合には、ガーベッジコレクションなどの同期化を必要とするグローバルオペレーションの実施に先行して、環境全体において安全ポイントが到達されていなければならない。
【0021】
ステップ212では、ガーベッジコレクションが実施される。本実施形態では、ガーベッジコレクションの実施は、共用ガーベッジコレクションコード(例えば複数の異なるガーベッジコレクタによって共用されるコード)が、特定のガーベッジコレクションコード(例えば特定のガーベッジコレクタに関連付けられたガーベッジコレクションコード)に、相互に作用するのを許容することを含む。ガーベッジコレクションを実施する方法の1つは、図3を参照にしながら後述される。ガーベッジコレクションが実施された後、プロセスは、仮想マシンによるメモリの割り当てを引き続き可能にするステップ204に戻る。
【0022】
次に、仮想マシンに関連付けられたコードやガーベッジコレクタ固有のコードなどの共用コードを含むプラグ可能なすなわちモジュール式のガーベッジコレクタを使用してガーベッジコレクションを実施する方法の1つを、図3を参照にしながら本発明の一実施形態に従って説明する。つまり、図2のステップ212が説明される。ガーベッジコレクションは、ステップ304からスタートする。ステップ304では、ガーベッジコレクタ固有のコードが、スレッドのためのガーベッジコレクションポイント(例えばスレッドに固有な安全ポイント)において、全てのスレッドを停止させるために、共用コードを呼び出す。
【0023】
ステップ308では、全てのスレッドが、適切なガーベッジコレクションポイントにおいて、共用コードによって停止される。ガーベッジコレクションポイントにおいて、システムの各スレッドは、例えば共用コードの中のメソッド呼び出しポイントおよび逆方向ブランチを使用して、ガーベッジコレクションのポーリングを行う。一実施形態では、ガーベッジコレクションポイントにおけるスレッドは、そのガーベッジコレクタの走査可能状態を保存してサスペンド可能である。
【0024】
全てのスレッドが停止した後、共用コードは、ステップ312において、所定数のバイトを解放するために特定のコードを呼び出す。ステップ320では、特定のコードは、共用コードに含まれるメソッドを呼び出すことによって、ルートを走査する。ルートの走査は、特殊ルートの処理を目的としており、ガーベッジコレクションが実施されているメモリをウォークスルーすることによって行うことができる。ルートが走査された後、特定のコードは、ステップ324において、共用コードを呼び出すことによってメモリ内をスイープする。スイープは、所定数のバイトを解放し、ガーベッジコレクションは完了する。
【0025】
当業者には明らかなように、図3で説明されたガーベッジコレクションを実施するために使用されるガーベッジコレクタは、マーク&スイープガーベッジコレクタである。本発明によるプラグ可能なガーベッジコレクタは、実質的に任意の適切なガーベッジコレクタであればよく、マーク&スイープガーベッジコレクタに限定されない。
【0026】
一実施形態では、世代別ガーベッジコレクタは、システムにおける交換に適したガーベッジコレクタである。世代別ガーベッジコレクタは、「若い」スペースと「古い」スペースとに区分されるメモリスペースに対して使用される。図4は、本発明の一実施形態に従ってメモリスペースを示す図である。メモリスペース402すなわちヒープ内では、「若い」スペース406と「古い」スペース410とにメモリスペースが区分されている。ルートセット418は、メモリスペース402内でオブジェクト414を参照するルート422(例えば絶対ルート)を含む。
【0027】
メモリスペース402において、若いスペース406は、新しいオブジェクトの割り当てに使用され、古いスペース410は、オブジェクト414e〜404gなどの長期利用(tenured, or long−standing)のオブジェクト414に使用される。すなわち、若いスペース406は、オブジェクト414の比較的若い世代に関連付けられており、古いスペース410は、オブジェクト414の比較的古い世代に関連付けられている。メモリスペース402においてガーベッジコレクションを実施する世代別ガーベッジコレクタは、通常、比較的古いオブジェクト414を若いスペース406から古いスペース410にコピーし、コピーされたオブジェクト414を若いスペース406から削除する、すなわち、コピーされたオブジェクト414に関連付けられていた若いスペース406からメモリを再利用する。また、世代別ガーベッジコレクタは、適切な場合には、デッドオブジェクト414(例えばオブジェクト414f,414g)を、若いスペース406および古いスペース410の両方から削除する。
【0028】
一実施形態では、若いスペース406および古いスペース410でガーベッジコレクションを実施するために、複数の異なるガーベッジコレクタを使用可能である。具体的には、仮想マシンコードを変更せずに、システムにおける複数の異なる世代別ガーベッジコレクタの交換が可能であることに加えて、若いスペース406および古いスペース410のそれぞれは、異なるプラグ可能なガーベッジコレクタを有していてもよい。ガーベッジコレクションフレームワークは、世代ガーベッジコレクションコードを、若いスペース406および古いスペース410のための個々のガーベッジコレクタによって共用可能にする。共用ガーベッジコレクションコードは、個々のガーベッジコレクタ間のタイミングを、または、独立したガーベッジコレクタのそれぞれに関連付けられ互いに独立に維持される特殊コードを、調整するように構成されてもよい。例えば、共用コードは、個々のすなわち独立のガーベッジコレクタの少なくとも1つが特定のアクションを実施すべき時間を決定する。
【0029】
実質的にプラグ可能な世代別ガーベッジコレクタのための共用インタフェースは、各スペースすなわち若い世代または古い世代などの各世代のために、必要に応じて有効にガーベッジコレクタを呼び出すことができる。例えば、若いスペースすなわち若い世代が満杯である場合には、共用インタフェースは、若いスペースにおいてガーベッジコレクションを呼び出してもよい。当業者には明らかなように、ほとんどのオブジェクトは短命である。このため、図4の若いスペース406は、通常、古いスペース410よりも小さい。そして、ガーベッジコレクションは、古いスペース410よりも若いスペース406において、頻繁に実施される。したがって、ガーベッジコレクションに費やされる時間の長さは、必要に応じて、若いスペース406および古いスペース410のそれぞれにおいて別々にガーベッジコレクションを実施することによって、短縮可能である。
【0030】
図5は、本発明の実施に適した代表的な汎用コンピュータシステムを示した図である。コンピュータシステム1030は、少なくとも1つのプロセッサ1032(中央処理装置すなわちCPUとも呼ばれる)を含む。プロセッサ1032は、メモリデバイスに接続されており、メモリデバイスは、複数の一次記憶デバイス1036(通例、読み出し専用メモリすなわちROM)と、複数の一次記憶デバイス1034(通例、ランダムアクセスメモリすなわちRAM)と、を含む。
【0031】
コンピュータシステム1030、より具体的には、CPU1032は、当業者には明らかなように、仮想マシンをサポートするように設けられる。以下では、コンピュータシステム1030にサポートされる仮想マシンの一例が、図6を参照にしながら説明される。当該分野においては周知のように、ROMは、CPU1032にデータおよび命令を単方向で伝送し、RAMは、通常、データおよび命令を双方向で伝送する。CPU1032は、一般に、任意の数のプロセッサを含む。一次記憶デバイス1034,1036は、共に、任意の適切なコンピュータ読み取り可能媒体を含んでいる。二次記憶媒体1038は、通常、大容量メモリデバイスであり、CPU1032に双方向に接続されて、データ記憶容量を補う。大容量メモリデバイス1038は、コンピュータ読み取り可能媒体であり、コンピュータコードおよびデータなどを含むプログラムを格納するために使用される。大容量メモリデバイス1038は、通常、一次記憶デバイス1034,1036よりも低速であるハードディスクまたはテープなどの記憶媒体である。大容量メモリストレージデバイス1038は、磁気または紙テープ読取装置またはその他の周知のデバイスであってもよい。大容量メモリデバイス1038に保持された情報は、適切な場合には、仮想メモリとしてのRAM1036の一部として標準的な方法で組み込まれていてもよい。CD−ROMのような特定の一次記憶デバイス1034も、データをCPU1032に単方向に伝送することができる。
【0032】
また、CPU1032は、1以上の入出力デバイス1040に接続されている。入出力デバイス1040は、ビデオモニタや、トラックボール、マウス、キーボード、マイクロフォン、タッチセンシティブディスプレイ、トランスデューサカードリーダ、磁気または紙テープリーダ、タブレット、スタイラス、音声または手書き文字認識装置、他のコンピュータなどの周知の入力デバイスを含むが、これらに限定されない。CPU1032は、1012に示すネットワーク接続を用いて、コンピュータまたは通信ネットワーク(例えばインターネットネットワークやイントラネットネットワーク)に、随意的に接続されていてもよい。ネットワーク接続によって、CPU1032は、上述した方法のステップを実行している間に、ネットワークから情報を受信したりネットワークに情報を送信したりすることができる。このような情報は、CPU1032を用いて実行される命令のシーケンスであることが多く、例えば搬送波で運ばれるコンピュータデータ信号の形式で、ネットワークから受信したりネットワークに送信したりされる。上述したデバイスおよび構成要素は、コンピュータハードウェアおよびソフトウェアの当業者には周知である。
【0033】
前述したように、仮想マシンは、コンピュータシステム1030上で動作可能である。図6は、図5のコンピュータシステム1030によってサポートされ、かつ、本発明の実施に適した仮想マシンを示す図である。Java(商標)プログラミング言語などで記述されたコンピュータプログラムが実行されると、コンパイル時間環境1105において、ソースコード1110がコンパイラ1120に提供される。コンパイラ1120は、ソースコード1110をバイトコード1130に変換する。一般に、ソースコード1110は、ソフトディベロッパによって作成された時点で、バイトコード1130に変換される。
【0034】
バイトコード1130は、一般に、複製されたり、ダウンロードされたり、ネットワーク(例えば図5のネットワーク1012)を介して分散されたり、記憶デバイス(例えば図5の一次記憶デバイス1034)に格納されたりしてもよい。本実施形態では、バイトコード1130は、プラットフォームに依存しない。すなわち、バイトコード1130は、適切な仮想マシン1140で動作する実質的にあらゆるコンピュータシステムで実行可能である。
【0035】
バイトコード1130は、仮想マシン1140を含むランタイム環境1135に供給される。ランタイム環境1135は、一般に、図5のCPU1032などの1つまたは複数のプロセッサを使用して実行される。仮想マシン1140は、コンパイラ1142と、インタープリタ1144と、ランタイムシステム1146と、を含む。バイトコード1130は、通常、コンパイラ1142またはインタープリタ1144に提供される。
【0036】
コンパイラ1142にバイトコード1130が提供される場合には、バイトコード1130に含まれるメソッドは、機械語命令にコンパイルされる。一実施形態では、コンパイラ1142は、バイトコード1130に含まれるメソッドのコンパイルをそのメソッドが実行される寸前まで遅らせるJIT(just−in−time)コンパイラである。インタープリタ1144にバイトコード1130が提供される場合には、バイトコード1130は、一度に1バイトコードずつインタープリタ1144に読み込まれる。そして、インタープリタ1144は、各バイトコードが読み込まれる毎に、各バイトコードによって規定された動作を実施する。つまり、当業者には明らかなように、インタープリタ1144は、バイトコード1130を「解釈」する。一般に、インタープリタ1144は、バイトコード1130の処理と、バイトコード1130に関連付けられた動作の実施と、を実質的に連続して行う。
【0037】
1つのメソッドが別のメソッドによって呼び出される場合、または、1つのメソッドがランタイム環境1135から呼び出される場合には、そのメソッドがインタープリット済みであれば、ランタイムシステム1146は、そのメソッドをバイトコード1130のシーケンスの形でランタイム環境1135から取得でき、そのメソッドは、インタープリタ1144によって直接実行されてもよい。逆に、呼び出されたメソッドが、コンパイルされていなかったコンパイル済みメソッドである場合は、ランタイムシステム1146は、そのメソッドを、バイトコード1130のシーケンスの形でランタイム環境1135から取得し、次いで、コンパイラ1142を作動させることができる。そして、コンパイラ1142は、バイトコード1130から機械語命令を生成し、CPU1032は、生成された機械語命令を直接実行することができる。機械語命令は、一般に、仮想マシン1140が終了した時点で廃棄される。Java(商標)仮想マシンに代表される仮想マシンの動作に関しては、引用によって本明細書に組み込まれるTim LindholmおよびFrank Yellinによる「The JavaTM Virtual Machine Specification(Java[商標]仮想マシン仕様)」(ISBN 0−201−63452−X)に詳述されている。
【0038】
以上では、本発明のいくつかの実施形態のみが取り上げられているが、本発明は、発明の趣旨もしくは範囲から逸脱することなしに、多くの他の具体的な形で実施されて良い。例えば、Java(商標)環境での使用に適したものとして、プラグ可能なガーベッジコレクタの使用が取り上げられているが、このプラグ可能なガーベッジコレクタは、実質的にあらゆる適切な環境で使用可能である。適切な環境としては、Smalltalk仮想マシンをサポートする環境が挙げられるが、これに限定されない。
【0039】
共用ガーベッジコレクションコードとアルゴリズム固有のガーベッジコレクションコードとの間のインタフェースは、多数のルーチンまたはメソッドを含むものとして規定され、なかには、共用ガーベッジコレクションコードの一部であるものと、アルゴリズム固有のガーベッジコレクションコードの一部であるものと、が含まれる。インタフェースに関連付けられたルーチンの名前および数は、通常、種々の変更が可能である。例えば、メモリの複数の異なる世代のための複数の異なるガーベッジコレクタをサポートするための特別のルーチンなどを、追加のルーチンとしてインタフェースに追加しても良い。
【0040】
本発明による各種のプロセスおよび方法に関連する工程は、通常、種々の変更が可能である。例えば、本発明による方法に関連する工程は、変更を加えたり順序を変えたりしてもよい。また、これらの工程は、本発明の趣旨もしくは範囲を逸脱することなく、入れ換えたり、削除したり、追加したりしてもよい。したがって、上述した実施例は、例示的なものであって限定的なものではないと考えられ、本発明は、ここで挙げた詳細に限定されず、添付した特許請求の範囲内で変更されて良い。
【図面の簡単な説明】
【図1A】
プラグ可能なガーベッジコレクタをサポートする環境を、本発明の一実施形態に従って示す図である。
【図1B】
プラグ可能なガーベッジコレクタをサポートする環境を、本発明の一実施形態に従って示す図である。
【図2】
仮想マシン全体の動作に関連する工程を、本発明の一実施形態に従って示すフローチャートである。
【図3】
例えば図2のステップ212などのガーベッジコレクションの実施に関連する工程を、本発明の一実施形態に従って示すフローチャートである。
【図4】
本発明の一実施形態に従ってメモリスペースを示す図である。
【図5】
本発明を実施するのに適した汎用コンピュータシステムを示す図である。
【図6】
本発明を実施するのに適した仮想マシンを示す図である。
【符号の説明】
102…仮想マシン環境
104…仮想マシン
106…メモリシステム
108…共用ガーベッジコレクタコード
112…ガーベッジコレクタ
114…ガーベッジコレクタ
402…メモしスペース
406…若いスペース
410…古いスペース
414…オブジェクト
418…ルートセット
422…ルート
1012…ネットワーク接続
1030…コンピュータシステム
1032…プロセッサ
1034,1036…一次記憶デバイス
1038…二次記憶媒体
1040…入出力デバイス
1105…コンパイル時間環境
1110…ソースコード
1120…コンパイラ
1130…バイトコード
1135…ランタイム環境
1140…仮想マシン
1142…コンパイラ
1144…インタープリタ
1146…ランタイムシステム
Claims (12)
- 仮想マシンを含むマルチスレッド仮想マシン環境においてメモリを再利用するためにコンピュータで実現されるインタフェースであって、
前記仮想マシンに関連付けられた第1のモジュールであって、前記仮想マシン環境においてガーベッジコレクションプロセスを開始するための第1のルーチンと、前記仮想マシン環境に関連付けられたルートを走査するための第2のルーチンと、前記仮想マシン環境に関連付けられた複数のオブジェクトへのルートを追跡するための第3のルーチンと、を含む前記第1のモジュールと、
前記第1のモジュールから分離され、前記第1のモジュールと調和するように設けられた第2のモジュールであって、前記仮想マシン環境においてヒープを初期化するための第4のルーチンと、前記仮想マシン環境においてオブジェクトを割り当てるための第5のルーチンと、前記ガーベッジコレクションプロセスを実施するための第6のルーチンと、を含む前記第2のモジュールと、
を備える、コンピュータで実現されるインタフェース。 - 請求項1に記載のコンピュータで実現されるインタフェースであって、
前記第2のモジュールは、さらに、
前記ガーベッジコレクションプロセスのために複数のバリアを提供するための少なくとも1つの第7のルーチンを含む、コンピュータで実現されるインタフェース。 - 請求項2に記載のコンピュータで実現されるインタフェースであって、
前記バリアは、読み出しバリアと書き込みバリアとを含む、コンピュータで実現されるインタフェース。 - 請求項1に記載のコンピュータで実現されるインタフェースであって、
前記第1のモジュールは、前記仮想マシン環境に関連付けられた特定の複数のオブジェクトを処理するための第7のルーチンを含む、コンピュータで実現されるインタフェース。 - 仮想マシンを含むマルチスレッド仮想マシン環境においてメモリを再利用するためにコンピュータで実現される方法であって
前記仮想マシンに関連付けられた第1のモジュールにおいて、
前記仮想マシン環境においてガーベッジコレクションプロセスを開始する工程と、
前記仮想マシン環境に関連付けられた複数のオブジェクトへのルートを走査する工程と、
前記仮想マシン環境に関連付けられた複数のオブジェクトへのルートを追跡する工程と、
前記第1のモジュールから分離され、前記第1のモジュールと調和するように設けられた第2のモジュールにおいて、
前記仮想マシン環境においてヒープを初期化する工程と、
前記仮想マシン環境においてオブジェクトを割り当る工程と、
前記ガーベッジコレクションプロセスを実施する工程と、
を備える、コンピュータで実現される方法。 - 請求項5に記載のコンピュータで実現される方法であって、さらに、
前記第2のモジュールにおいて、
前記ガーベッジコレクションプロセスのために複数のバリアを提供する工程を備える、コンピュータで実現される方法。 - 請求項6に記載のコンピュータで実現される方法であって、
前記バリアは、読み出しバリアと書き込みバリアとを含む、コンピュータで実現される方法。 - 請求項5に記載のコンピュータで実現される方法であって、さらに、
前記第1のモジュールにおいて、
前記仮想マシン環境に関連付けられた特定の複数のオブジェクトを処理する工程を備える、コンピュータで実現される方法。 - 仮想マシンを含むマルチスレッド仮想マシン環境においてメモリを再利用するための装置であって
前記仮想マシンに関連付けられた第1のモジュール内に、
前記仮想マシン環境においてガーベッジコレクションプロセスを開始するための手段と、
前記仮想マシン環境に関連付けられた複数のオブジェクトへのルートを走査するための手段と、
前記仮想マシン環境に関連付けられた複数のオブジェクトへのルートを追跡するための手段と、
前記第1のモジュールから分離され、前記第1のモジュールと調和するように設けられた第2のモジュール内に、
前記仮想マシン環境においてヒープを初期化するための手段と、
前記仮想マシン環境においてオブジェクトを割り当てるための手段と、
前記ガーベッジコレクションプロセスを実施するための手段と
を備える装置。 - 請求項9に記載の装置であって、さらに、
前記第2のモジュール内に、
前記ガーベッジコレクションプロセスのために複数のバリアを提供するための手段を備える、装置。 - 請求項10に記載の装置であって、
前記バリアは、読み出しバリアと書き込みバリアとを含む、装置。 - 請求項9に記載の装置であって、さらに、
前記第1のモジュール内に、
前記仮想マシン環境に関連付けられた特定の複数のオブジェクトを処理するための手段を備える、装置。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US21092400P | 2000-06-12 | 2000-06-12 | |
US60/210,924 | 2000-06-12 | ||
US09/836,927 US6836782B1 (en) | 2000-06-12 | 2001-04-17 | Method and apparatus for implementing modular garbage collectors |
US09/836,927 | 2001-04-17 | ||
PCT/US2001/018465 WO2001097042A2 (en) | 2000-06-12 | 2001-06-06 | Method and apparatus for implementing modular garbage collectors |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004503869A true JP2004503869A (ja) | 2004-02-05 |
JP5051961B2 JP5051961B2 (ja) | 2012-10-17 |
Family
ID=26905653
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002511179A Expired - Lifetime JP5051961B2 (ja) | 2000-06-12 | 2001-06-06 | モジュール式ガーベッジコレクタを実現するための方法および装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US6836782B1 (ja) |
EP (1) | EP1311953A2 (ja) |
JP (1) | JP5051961B2 (ja) |
AU (1) | AU2001266761A1 (ja) |
WO (1) | WO2001097042A2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015516633A (ja) * | 2012-07-27 | 2015-06-11 | インテル コーポレイション | 装置、システム及びメモリ管理の方法 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7174354B2 (en) * | 2002-07-31 | 2007-02-06 | Bea Systems, Inc. | System and method for garbage collection in a computer system, which uses reinforcement learning to adjust the allocation of memory space, calculate a reward, and use the reward to determine further actions to be taken on the memory space |
US7747659B2 (en) * | 2004-01-05 | 2010-06-29 | International Business Machines Corporation | Garbage collector with eager read barrier |
US7251671B2 (en) * | 2004-03-26 | 2007-07-31 | Intel Corporation | Method and system for garbage collection wherein resetting the mark/allocation bit, and switching the mark/allocation bit to the mark bit to perform marking and scanning of objects using the identified object as a root object and providing mark/allocation bit information being displayed at the client |
EP1904929B1 (en) * | 2005-06-24 | 2014-11-26 | BlackBerry Limited | System and method for managing memory in a mobile device |
US20080281887A1 (en) * | 2007-05-10 | 2008-11-13 | Nokia Corporation | Application specific garbage collection system |
US20090327621A1 (en) * | 2008-06-27 | 2009-12-31 | Microsoft Corporation | Virtual memory compaction and compression using collaboration between a virtual memory manager and a memory manager |
US20100011357A1 (en) * | 2008-07-13 | 2010-01-14 | International Business Machines Corporation | System and method for garbage collection in a virtual machine |
US8327111B2 (en) * | 2009-03-30 | 2012-12-04 | International Business Machines Corporation | Method, system and computer program product for batched virtual memory remapping for efficient garbage collection of large object areas |
CN102236603B (zh) | 2010-04-29 | 2014-12-17 | 国际商业机器公司 | 虚拟化环境中垃圾回收的方法和系统 |
US9141540B2 (en) * | 2010-11-12 | 2015-09-22 | International Business Machines Corporation | Garbage collection of interned strings |
US9740716B2 (en) * | 2013-08-21 | 2017-08-22 | Oracle International Corporation | System and method for dynamically selecting a garbage collection algorithm based on the contents of heap regions |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5561785A (en) * | 1992-10-29 | 1996-10-01 | International Business Machines Corporation | System for allocating and returning storage and collecting garbage using subpool of available blocks |
US5692193A (en) * | 1994-03-31 | 1997-11-25 | Nec Research Institute, Inc. | Software architecture for control of highly parallel computer systems |
EP0836155A3 (en) * | 1996-10-09 | 1999-03-31 | Canon Kabushiki Kaisha | Information recording medium |
US5930807A (en) * | 1997-04-23 | 1999-07-27 | Sun Microsystems | Apparatus and method for fast filtering read and write barrier operations in garbage collection system |
US5845298A (en) * | 1997-04-23 | 1998-12-01 | Sun Microsystems, Inc. | Write barrier system and method for trapping garbage collection page boundary crossing pointer stores |
US6081665A (en) * | 1997-12-19 | 2000-06-27 | Newmonics Inc. | Method for efficient soft real-time execution of portable byte code computer programs |
US6125434A (en) | 1998-05-19 | 2000-09-26 | Northorp Grumman Corporation | Dynamic memory reclamation without compiler or linker assistance |
US6065020A (en) * | 1998-05-27 | 2000-05-16 | Microsoft Corporation | Dynamic adjustment of garbage collection |
US6651080B1 (en) | 1998-10-16 | 2003-11-18 | Sun Microsystems, Inc. | Techniques for implementing pluggable virtual machines |
AU2158900A (en) | 1998-11-25 | 2000-06-19 | Sun Microsystems, Inc. | A method for enabling comprehensive profiling of garbage-collected memory systems |
US6671707B1 (en) * | 1999-10-19 | 2003-12-30 | Intel Corporation | Method for practical concurrent copying garbage collection offering minimal thread block times |
-
2001
- 2001-04-17 US US09/836,927 patent/US6836782B1/en not_active Expired - Lifetime
- 2001-06-06 AU AU2001266761A patent/AU2001266761A1/en not_active Abandoned
- 2001-06-06 JP JP2002511179A patent/JP5051961B2/ja not_active Expired - Lifetime
- 2001-06-06 EP EP01944338A patent/EP1311953A2/en not_active Withdrawn
- 2001-06-06 WO PCT/US2001/018465 patent/WO2001097042A2/en active Application Filing
Non-Patent Citations (3)
Title |
---|
CSNG200001280001, 小池龍信ほか, "オブジェクトの世代を考慮に入れたインクリメンタルなごみ集め処理", 情報処理学会論文誌, 19990815, 第40巻,第SIG7(PRO4)号, P.1−8, JP, 社団法人情報処理学会 Information Processing Socie * |
JPN6010043095, 小池龍信ほか, "オブジェクトの世代を考慮に入れたインクリメンタルなごみ集め処理", 情報処理学会論文誌, 19990815, 第40巻,第SIG7(PRO4)号, P.1−8, JP, 社団法人情報処理学会 Information Processing Socie * |
JPN7010002309, Agesen,Ole, "GC Points in a Threaded Environment", SMLI Technical Report, 199812, TR98−70 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015516633A (ja) * | 2012-07-27 | 2015-06-11 | インテル コーポレイション | 装置、システム及びメモリ管理の方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2001097042A2 (en) | 2001-12-20 |
WO2001097042A3 (en) | 2002-03-14 |
US6836782B1 (en) | 2004-12-28 |
EP1311953A2 (en) | 2003-05-21 |
JP5051961B2 (ja) | 2012-10-17 |
AU2001266761A1 (en) | 2001-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6820101B2 (en) | Methods and apparatus for optimizing garbage collection using separate heaps of memory for storing local objects and non-local objects | |
JP3027845B2 (ja) | プログラム制御装置および方法 | |
US6757890B1 (en) | Methods and apparatus for enabling local Java object allocation and collection | |
US7945911B1 (en) | Barrier synchronization method and apparatus for work-stealing threads | |
US7086053B2 (en) | Method and apparatus for enabling threads to reach a consistent state without explicit thread suspension | |
JP4511653B2 (ja) | マルチスレッド仮想マシン内におけるメモリ・アロケーションの方法及び装置 | |
US7092978B2 (en) | Space-efficient, depth-first parallel copying collection technique making use of work—stealing on the same structures that maintain the stack of items to be scanned | |
US6240547B1 (en) | Method and apparatus for dynamically deoptimizing compiled activations | |
US6253215B1 (en) | Method, apparatus, and article of manufacture for facilitating resource management for applications having two types of program code | |
JP4756231B2 (ja) | 掃除用のガーベッジコレクションの効果を高めるための方法、コンピュータ読み取り可能媒体、コンピュータシステム、及び、メモリ | |
JP4265610B2 (ja) | プログラム制御装置、プログラム制御方法、およびプログラム記録媒体 | |
JP5051961B2 (ja) | モジュール式ガーベッジコレクタを実現するための方法および装置 | |
US6681234B2 (en) | Method and apparatus for storing long-lived objects in a virtual machine | |
US6581077B2 (en) | Method and apparatus for storing short-lived objects in a virtual machine | |
JP4333676B2 (ja) | プログラム制御装置、プログラム制御方法、およびプログラム記録媒体 | |
US6965905B2 (en) | Lock-free, parallel remembered sets | |
EP1356376B1 (en) | Method and apparatus for efficiently tracking monitors | |
JP3826626B2 (ja) | プログラム制御装置、プログラム制御方法、およびプログラム記録媒体 | |
JP4345748B2 (ja) | メモリ割当装置、メモリ割当方法、およびプログラム記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20071109 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100727 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20101026 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20101124 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110223 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20110602 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20110606 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110802 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20111202 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120321 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120621 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20120621 |
|
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: 20120717 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120724 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 5051961 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: 20150803 Year of fee payment: 3 |
|
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 |