JP2004503869A - モジュール式ガーベッジコレクタを実現するための方法および装置 - Google Patents

モジュール式ガーベッジコレクタを実現するための方法および装置 Download PDF

Info

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
Application number
JP2002511179A
Other languages
English (en)
Other versions
JP5051961B2 (ja
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JP2004503869A publication Critical patent/JP2004503869A/ja
Application granted granted Critical
Publication of JP5051961B2 publication Critical patent/JP5051961B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

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
    • 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/99931Database or file accessing
    • 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

Abstract

【課題】
【解決手段】仮想マシン環境におけるガーベッジコレクタの効率的な交換を可能にするための方法および装置が開示される。本発明の一態様では、仮想マシンを有するマルチスレッド仮想マシン環境においてメモリを再利用するためのインタフェースは、仮想マシンに関連付けられた第1のモジュールと、第1のモジュールから分離されているが第1のモジュールと調和する第2のモジュールと、を含む。第1のモジュールは、仮想マシン環境においてガーベッジコレクションプロセスを開始するための第1のルーチンと、仮想マシン環境に関連付けられたルートを走査するための第2のルーチンと、仮想マシン環境に関連付けられたオブジェクトへのルートを追跡するための第3のルーチンと、を含む。第2のモジュールは、仮想マシン環境においてヒープを初期化するための第4のルーチンと、仮想マシン環境においてオブジェクトを割り当てるための第5のルーチンと、ガーベッジコレクションプロセスを実施するための第6のルーチンと、を含む。一実施形態では、第2のモジュールは、ガーベッジコレクションプロセスのために読み出しおよび書き込みのバリアを提供するための第7のルーチンも含む。
【選択図】図1A

Description

【0001】
【発明の背景】
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のモジュールであって、前記仮想マシン環境においてガーベッジコレクションプロセスを開始するための第1のルーチンと、前記仮想マシン環境に関連付けられたルートを走査するための第2のルーチンと、前記仮想マシン環境に関連付けられた複数のオブジェクトへのルートを追跡するための第3のルーチンと、を含む前記第1のモジュールと、
    前記第1のモジュールから分離され、前記第1のモジュールと調和するように設けられた第2のモジュールであって、前記仮想マシン環境においてヒープを初期化するための第4のルーチンと、前記仮想マシン環境においてオブジェクトを割り当てるための第5のルーチンと、前記ガーベッジコレクションプロセスを実施するための第6のルーチンと、を含む前記第2のモジュールと、
    を備える、コンピュータで実現されるインタフェース。
  2. 請求項1に記載のコンピュータで実現されるインタフェースであって、
    前記第2のモジュールは、さらに、
    前記ガーベッジコレクションプロセスのために複数のバリアを提供するための少なくとも1つの第7のルーチンを含む、コンピュータで実現されるインタフェース。
  3. 請求項2に記載のコンピュータで実現されるインタフェースであって、
    前記バリアは、読み出しバリアと書き込みバリアとを含む、コンピュータで実現されるインタフェース。
  4. 請求項1に記載のコンピュータで実現されるインタフェースであって、
    前記第1のモジュールは、前記仮想マシン環境に関連付けられた特定の複数のオブジェクトを処理するための第7のルーチンを含む、コンピュータで実現されるインタフェース。
  5. 仮想マシンを含むマルチスレッド仮想マシン環境においてメモリを再利用するためにコンピュータで実現される方法であって
    前記仮想マシンに関連付けられた第1のモジュールにおいて、
    前記仮想マシン環境においてガーベッジコレクションプロセスを開始する工程と、
    前記仮想マシン環境に関連付けられた複数のオブジェクトへのルートを走査する工程と、
    前記仮想マシン環境に関連付けられた複数のオブジェクトへのルートを追跡する工程と、
    前記第1のモジュールから分離され、前記第1のモジュールと調和するように設けられた第2のモジュールにおいて、
    前記仮想マシン環境においてヒープを初期化する工程と、
    前記仮想マシン環境においてオブジェクトを割り当る工程と、
    前記ガーベッジコレクションプロセスを実施する工程と、
    を備える、コンピュータで実現される方法。
  6. 請求項5に記載のコンピュータで実現される方法であって、さらに、
    前記第2のモジュールにおいて、
    前記ガーベッジコレクションプロセスのために複数のバリアを提供する工程を備える、コンピュータで実現される方法。
  7. 請求項6に記載のコンピュータで実現される方法であって、
    前記バリアは、読み出しバリアと書き込みバリアとを含む、コンピュータで実現される方法。
  8. 請求項5に記載のコンピュータで実現される方法であって、さらに、
    前記第1のモジュールにおいて、
    前記仮想マシン環境に関連付けられた特定の複数のオブジェクトを処理する工程を備える、コンピュータで実現される方法。
  9. 仮想マシンを含むマルチスレッド仮想マシン環境においてメモリを再利用するための装置であって
    前記仮想マシンに関連付けられた第1のモジュール内に、
    前記仮想マシン環境においてガーベッジコレクションプロセスを開始するための手段と、
    前記仮想マシン環境に関連付けられた複数のオブジェクトへのルートを走査するための手段と、
    前記仮想マシン環境に関連付けられた複数のオブジェクトへのルートを追跡するための手段と、
    前記第1のモジュールから分離され、前記第1のモジュールと調和するように設けられた第2のモジュール内に、
    前記仮想マシン環境においてヒープを初期化するための手段と、
    前記仮想マシン環境においてオブジェクトを割り当てるための手段と、
    前記ガーベッジコレクションプロセスを実施するための手段と
    を備える装置。
  10. 請求項9に記載の装置であって、さらに、
    前記第2のモジュール内に、
    前記ガーベッジコレクションプロセスのために複数のバリアを提供するための手段を備える、装置。
  11. 請求項10に記載の装置であって、
    前記バリアは、読み出しバリアと書き込みバリアとを含む、装置。
  12. 請求項9に記載の装置であって、さらに、
    前記第1のモジュール内に、
    前記仮想マシン環境に関連付けられた特定の複数のオブジェクトを処理するための手段を備える、装置。
JP2002511179A 2000-06-12 2001-06-06 モジュール式ガーベッジコレクタを実現するための方法および装置 Expired - Lifetime JP5051961B2 (ja)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015516633A (ja) * 2012-07-27 2015-06-11 インテル コーポレイション 装置、システム及びメモリ管理の方法

Families Citing this family (11)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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