JPH1115726A - コンピュータ制御方法、装置、システム、およびコンピュータプログラム製品 - Google Patents

コンピュータ制御方法、装置、システム、およびコンピュータプログラム製品

Info

Publication number
JPH1115726A
JPH1115726A JP10151802A JP15180298A JPH1115726A JP H1115726 A JPH1115726 A JP H1115726A JP 10151802 A JP10151802 A JP 10151802A JP 15180298 A JP15180298 A JP 15180298A JP H1115726 A JPH1115726 A JP H1115726A
Authority
JP
Japan
Prior art keywords
processing units
garbage collection
shared heap
computer
heap memory
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.)
Withdrawn
Application number
JP10151802A
Other languages
English (en)
Inventor
David M Ungar
エム. アンガー デイビッド
Mario I Wolczko
アイ. ウォルツコ マリオ
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 JPH1115726A publication Critical patent/JPH1115726A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0269Incremental or concurrent garbage collection, e.g. in real-time systems
    • G06F12/0276Generational garbage collection
    • 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/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99956File allocation
    • Y10S707/99957Garbage collection

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Abstract

(57)【要約】 【課題】 マルチプロセッサ環境においてガーベジコレ
クションプログラムの拡張された動作を与えるための経
済的な装置、方法、システムおよびコンピュータプログ
ラム製品を提供する。 【解決手段】 少なくとも2つの処理ユニットによる変
更を受ける共有ヒープメモリのガーベジコレクションを
行うコンピュータ制御方法は、(a)該少なくとも2つ
の処理ユニットのうちの1つによって初期ガーベジコレ
クション条件を検出するステップと、(b)該少なくと
も2つの処理ユニットによって該共有ヒープメモリの変
更を休止するステップと、(c)該少なくとも2つの処
理ユニットにおいて、該共有ヒープメモリに対する世代
ガーベジコレクションプロセスを開始するステップと、
(d)該少なくとも2つの処理ユニットにおける該世代
ガーベジコレクションプロセスの終了を検出するステッ
プと、(e)該少なくとも2つの処理ユニットによって
該共有ヒープメモリの変更を再開するステップとを包含
する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータメモ
リの割り当ておよび割り当て解除(deallocation)の分
野に関する。具体的には、本発明は、世代ガーベジコレ
クション(generational garbage collection)技術を
用いて、複数の処理ユニット(processingunit)によっ
て共有されるヒープメモリからのガーベジノードを自動
的に再生するための新しい有用な方法、装置、システム
およびコンピュータプログラム製品である。
【0002】
【従来の技術】メモリ割り当ておよび割り当て解除技術
は、構造化プログラミング方法論およびオブジェクト指
向プログラミング方法論において非常に重要になってき
ている。ヒープから割り当てられたメモリは、情報を格
納するために用いることができる。この情報はしばし
ば、オブジェクト指向パラダイム(paradigm)で生成さ
れたオブジェクトである。ヒープメモリの割り当てられ
た部分がノードである。以下に説明する技術は、データ
を含むノードと、裏付けられたオブジェクトであるノー
ドとの両方に当てはまる。こららのノードは、プログラ
ムによって明示的に割り当てられる。しかし、多くの近
代のシステムは、ヒープメモリガーベジコレクション技
術を用いて、割り当てられたノードで用いられなくなっ
たノードを精確に回復する。さらに、近代のコンピュー
タは、共有ヒープメモリにアクセスすることができる複
数の処理ユニットを有していることが多く、この場合、
各処理ユニットは、共有ヒープにおいてノードを割り当
て(従って、共有ヒープを変更し(mutate))、各処理
ユニットは、共有ヒープに対してガーベジコレクション
を行うことができる。
【0003】[ガーベジコレクションの紹介]コンピュ
ータメモリは資源である。プログラムにより、コンピュ
ータは、メモリに格納された命令に基づいて動作を行う
(実行する)。プログラムの実行にも、情報を格納する
ためにメモリが用いられる。この情報は、メモリに存在
するデータ構造に編成されることが多い。これらのデー
タ構造はしばしば、ポインタにより1つの構造から別の
構造にリンクされ、スタティック、レジスタおよびスタ
ック変数の記憶において、ポインタを通して参照され
る。
【0004】プログラムの実行にはしばしば、制限され
た期間使用する目的のためのメモリが必要とされる。例
えば、プログラムは、情報を保持するためにメモリを割
り当て、割り当てられたメモリに情報を格納し、格納さ
れた情報に対して演算を行って結果を生成すると、その
格納された情報を必要としなくなる場合がある。プログ
ラムが、格納された情報を必要としなくなると、割り当
てられたメモリを解放して、後に再利用することができ
る。
【0005】近代のプログラミング言語は、メモリのス
タティック、スタックおよびヒープ割り当てのための機
能を与える。スタティック割り当てでは、コンパイルお
よび/またはリンク時に格納場所に変数をバインドす
る。スタック割り当てでは、プログラムブロックが実行
の準備をすると、処理ユニットのスタックに活性化フレ
ームをプッシュする。この活性化フレームは、処理ユニ
ットで実行しているプログラムブロックの実行範囲内の
変数の記憶を含む。一旦、プログラムブロックが終了す
ると、スタックから活性化フレームがポップされる。活
性化フレームに格納された変数は、ブロックの活性化か
らその次の活性化までセーブされるわけではない。ヒー
プ割り当てでは、変数用メモリを任意の順序で割り当て
るおよび割り当て解除することが可能となり、これらの
変数は、これらの変数を作成した手順(あるいはブロッ
ク)の間存続し得る(outlive)。一旦、メモリの割り
当てが解除されると、このメモリは、別の用途で用いる
ための再割り当てを行うために利用可能となる。
【0006】「ノード」とは、ヒープから割り当てられ
たメモリの領域である。ノードは、ポインタを通してア
クセスされる。直接(あるいは、単純)ポインタは、ヒ
ープ中のノードアドレスである。間接ポインタ(「ハン
ドル」と呼ばれることもある)は、ノードのアドレスを
含むメモリ中のアドレスを指す。より複雑なポインタも
ある。間接ポインタは、ハンドルの発生を更新する必要
なく、ヒープ中でノードを移動させることを可能にす
る。
【0007】「ルート集合(root set)」とは、参照さ
れたノードをヒープの状態に関わらず保持しなければな
らないような、ノード参照の集合である。ノードがルー
ト集合にある場合、あるいは到達可能なノードによって
参照される場合、そのノードは到達可能である。「参照
集合(reference set)」とは、ノードに含まれるノー
ド参照の集合である。ノードがルート集合から到達不可
能になり、再生されないとき、メモリリークが起こる。
メモリリークは、プログラムが利用できるヒープメモリ
の量を低減する。ガーベジノードとは、ルート集合から
到達不可能となるノードであって、再生できるノードで
ある。
【0008】ヒープメモリは、明示ノードの割り当てお
よび割り当て解除の手順を呼び出すことによって用いる
ことができる。しかし、プログラマは、新しいノードが
いつ必要とされるかを知ることはできるが、ノードがい
つ到達不可能になるかを知ることは困難である場合が多
い。従って、プログラマが明示的にノードの割り当てを
解除すると、問題点が生じ得る。この問題点のうちの1
つは、メモリリークをデバッグすることが非常に困難な
ことである。プログラムされているアプリケーションの
設計のために、プログラマは、しばしばいつ明示的にメ
モリの割り当てを解除することができるか混乱する。さ
らに、プログラムの一部分がメモリの割り当て解除可能
な状態になったときには、必ず、プログラムの他の部分
がどれもそのメモリを用いないようにしなければならな
い。従って、オブジェクト指向プログラミング(OO
P)言語では、メモリ管理プロセスにおいて、多数のモ
ジュールが密に協働しなければならない。これにより、
OOPプログラミング方法論に反して、独立しているは
ずのモジュール間が密接に結合していることになる。
【0009】プログラマが明示的にメモリの割り当てを
解除する必要がなければ、これらの困難な点は軽減され
る。自動ガーベジコレクション法では、メモリを走査し
て、参照されたノードを探し、ガーベジノードを回復す
るが、この方法では代償が大きい。ガーベジノードを見
つけてその割り当てを解除するプロセスは、プロセッサ
資源を必要とする。ガーベジコレクションプロセスが実
行プログラムに与える影響のバランスをとることは重要
である。なぜなら、プログラムの主要な機能は、タイム
リーな動作を必要とするか、またはユーザとの対話が妨
害されてはならないか、あるいは、他の何らかのリアル
タイム制約を受け得るからである。
【0010】変更(mutator)プログラムは、ヒープ中
の存続ノードのグラフの接続性を変える(変更する)。
当業者は、本発明の文脈において、「変更(mutatio
n)」という用語は、ガーベジコレクション以外の目的
のために、ヒープ中のノードにアクセスするいかなる動
作をも含むことを認識するであろう。ガーベジコレクシ
ョンを用いるシステムでは、変更プログラムがメモリを
必要とすると、ヒープからノードが割り当てられる。こ
れらのノードは、必要とされなくなっても、最初に再生
されるわけではない。メモリ割り当ての試みが失敗する
と、あるいは、何らかの条件に応答して(例えば、クロ
ックまたはカウンタが満了すると)、代わってガーベジ
コレクションプロセスが自動的に呼び出され、ガーベジ
ノードに割り当てられた、使用されていないメモリが、
その後の再利用のために再生される。
【0011】ガーベジコレクション法の中には、ノード
をコピー(あるいは、スカビンジ(scavenge))するも
のもある(即ち、これらの方法は、存続していると思わ
れるノードをヒープの1つの場所から別の場所に再配置
する)。これらの方法では、ノードのもとの場所を指す
既存のポインタを、再配置されたノードをアクセスする
ために利用することができるようにする機構が必要であ
る。これらの機構は、ノードのもとの場所を指す既存の
ポインタを更新すること、およびノードの新しい場所を
指す間接ポインタを与えることを(特に)含む。
【0012】[世代ガーベジコレクション]世代ガーベ
ジコレクション技術は、ヒープから割り当てられた多数
のノードが短期間だけ用いられることを観察する技術で
ある。これらのノードは、特定の短期間の目的のために
割り当てられ、その目的で用いられ、使用後に、起こり
得るその後の再利用のために割り当てを解除することが
できる。従って、より若いノードに集中するガーベジコ
レクションアルゴリズムは、すべてのノードを等しく処
理するアルゴリズムよりも効率的である。それは、ガー
ベジコレクションプロセスの間に調べなければならない
ノードの数が少ないからである。
【0013】世代ガーベジコレクションアルゴリズム
は、ヒープ中で、ノードを、ノードの経時に応じて2つ
以上の領域に分ける。各々の領域が世代である。ノード
はまず、最も若い世代内の作成領域から割り当てられ、
ノードが十分に長い間存続していれば、より古い世代に
コピーされる(「十分に長い」という用語はしばしば、
その後のスカビンジ動作までのことを指す)。これらの
ガーベジコレクションアルゴリズムは、ガーベジのほと
んどが発見される最も若い世代の領域からの再生記憶に
集中する。一般に、最も若い世代の存続ノードの数は、
その他の世代領域の存続ノードの数よりも大幅に少ない
ため、最も若い世代のノードをスカビンジするのに必要
とされる時間は、その他の世代領域をスカビンジするの
に必要とされる時間よりも少ない。より新しい世代のス
カビンジ動作は、マイナーコレクションと呼ばれる。よ
り古い世代の領域に対して行われるガーベジコレクショ
ン動作はすべて、メジャーコレクションと呼ばれる。マ
イナーコレクションプロセスでは、オーバーヘッドがよ
り少なく、より効率的であるため、マイナーコレクショ
ン動作は、メジャーコレクション動作よりも頻繁に起こ
る。
【0014】一旦ノードがコピーされると、将来コピー
されたノードを参照したときにその参照が結果的に成功
するように、コピーされたノードを指すすべてのポイン
タを更新あるいは監視しなければならない。さらに、コ
ピーされたノードに含まれるより若い世代のノードを指
すポインタにアクセスして参照集合を決定しなければな
らない。
【0015】図1Aは、共有ヒープ領域を示し、全体と
して参照番号100で示している。共有ヒープ領域10
0は、世代ガーベジコレクション領域101を含む。世
代ガーベジコレクション領域101は、より若い世代1
03およびより古い世代領域105を含む。この例で
は、より若い世代103は、作成領域107、「to」
領域109、および「from」領域111に細分され
る。作成領域107において、ノード(新しいノード1
13など)がまず作成される。作成領域107が一杯に
なると、作成領域107中の、例えば新しいノード11
3などの存続ノードが、「from」領域111の存続
ノードとともに、「to」領域109にコピーされ(従
って、作成領域107が空になり)、「to」領域10
9および「from」領域111の意味が置き換わる。
当業者は、より若い世代103の存続ノードが、ガーベ
ジコレクションプロセスの実現による判断に応じて、よ
り古い世代領域105にコピーされることを理解するで
あろう。その結果、より古い世代105において促進ノ
ード(promoted node)115が得られる。当業者は、
上記の世代実現以外の世代実現があることを理解するで
あろう。さらに、当業者は、作成領域107が最も若い
ノードを含むことを理解するであろう。
【0016】[カードマーキング]ルート集合を決定す
るプロセスには、ヒープでポインタを探すのにかなりの
プロセッサ時間をとる。先行技術で用いられている1つ
の最適化は、ヒープを、等しいサイズの領域(カードと
呼ばれる)にセグメント化し、各カード内で書き込み動
作が起こった時に、そのカードに、書き込みバリアの形
態でマークを付けることである。これにより、ルート集
合の更新時に、(ヒープメモリ内のすべてのカードから
ではなく)「dirty」とマークされたカードのみか
らポインタを探す。図1Bは、カードマーキングの使用
を説明する図である。カードマークヒープ全体を参照番
号120で示しており、このヒープ120は、ヒープメ
モリのカードマーク領域121を含む。ヒープメモリの
カードマーク領域121は、第1のカード123および
最終カード125を含む。ヒープメモリのカードマーク
領域121全体にわたって、複数のノード127が分配
される。第1のカード123は第1のカードマーカ12
9に関連し、最終カード125は第2のカードマーカ1
31に関連する。第1のカードマーカ129および第2
のカードマーカ131は、カードマークベクトル133
に含まれる。カード123および125の一方でメモリ
が変更されると、適切なカードマーカにフラグが立てら
れる。このようにして、図1Bに示すように、ヒープメ
モリのカードマーク領域121の最後のスカビンジの後
に第1のカード123内に書き込み動作が行われる。こ
の書き込み動作では、第1のカードマーカ129の
「X」で示されるように、第1のカードマーカ129に
「dirty」としてマークが付けられる。第2のカー
ドマーカ131にマークが付けられていなければ、これ
は、最後のスカビンジ動作以降、最終カード125のメ
モリがどこも変更されていないことを示す。単一プロセ
ッサシステムでは、1つのプロセッサ135が、ヒープ
メモリのカードマーク領域121の変更およびガーベジ
コレクションを制御する。変更プログラム内のコード
は、プログラムの実行に応じて、カードマークベクトル
133のカードにマークを付ける。ガーベジコレクショ
ンプロセスは、マークが付けられたカードを調べて、変
えられたポインタあるいは新しいポインタが有るかどう
かを見る。
【0017】カードマーキングの実現は、1993年10月に
ワシントンD.C.で開催されたOOPSLA'93 Garbage Collec
tion Workshopで発表されたUrs Hlzleによる「A Fast W
riteBarrier for Generational Garbage Collectors」
に記載されている。本明細書において、この論文を、先
行技術を説明するものとして参考として援用する。この
論文は、以下のインターネットアドレスで見ることがで
きる。 http://self.sunlabs.com/papers/write-barrier.html
【0018】先行技術のヒープ割り当てプロセスを、図
1Cに示している。図1Cでは、「ヒープ割り当て」プ
ロセス全体を参照番号150で示しており、このプロセ
ス150は、「開始」ターミナル151で始まり、ヒー
プからノードを割り当てるよう試みる「ノード割り当
て」手順153に続く。その後、「ヒープが不十分」判
断手順155で、「ノード割り当て」手順153がノー
ドの割り当てに成功したかどうかを判断する。「ノード
割り当て」手順153が成功であれば(即ち、ヒープの
作成領域からノードが割り当てられていれば)、「ヒー
プ割り当て」プロセス150は、「終了」ターミナル1
57を通って終了する。しかし、「ノード割り当て」手
順153が不成功であれば、「ヒープ割り当て」プロセ
ス150は、「ガーベジコレクション」手順159に続
く。「ガーベジコレクション」手順159は、ガーベジ
コレクションプロセスを行い、ヒープに空きスペースを
作る。これは、まずヒープの変更を中止し、その後、ヒ
ープの1つの領域から別の領域にすべての存続ノードを
スカビンジ(コピー)しながら、もとのノードの代わり
にノードの新しいコピーを指すように参照(ポインタ)
を更新することによっておこなわれる。次に、「ヒープ
割り当て」プロセス150は、再び、「ノード割り当
て」手順153でノードを割り当てるよう試み、それが
成功すると、「ヒープ割り当て」プロセス150は「終
了」ターミナル157を通って終了する。当業者は、ヒ
ープがアクセス可能なノードで満たされると、「ガーベ
ジコレクション」手順159は、リクエストされたノー
ドに割り当てるのに十分なスペースを空けることができ
ず、ヒープ満杯状態を扱うために他の手順(図示せず)
が必要であることを理解するであろう。
【0019】図1Dは、存続ノードをスカビンジするた
めに用いられる先行技術の単一プロセッサ(uniprocess
or)ガーベジコレクションプロセス170を示す。単一
プロセッサガーベジコレクションプロセス170は、
「開始」ターミナル171で始まり、「ポインタの位置
を特定する」手順173に続き、変更のスタック、スタ
ティック変数、およびヒープからポインタの位置を特定
する。次に、単一プロセッサガーベジコレクションプロ
セス170は、「存続ノードをスカビンジする」手順1
75に続き、ポインタによって参照される存続ノードを
スカビンジする。単一プロセッサガーベジコレクション
プロセス170は、すべてのポインタを処理し終わるま
で、「ポインタの位置を特定する」手順173および
「存続ノードをスカビンジする」手順175を繰り返
す。その後、単一プロセッサガーベジコレクションプロ
セス170は、「コピーされたノードから新しいノード
を指すポインタを探す」手順177に続き、「存続ノー
ドをスカビンジする」手順175の間にコピーされたノ
ードを探索して、新しいノードを参照するコピーされた
ノードで、ポインタの位置を特定する。単一プロセッサ
ガーベジコレクションプロセス170は、コピーされた
ノードのすべてを探索し終わると、「終了」ターミナル
179を通って終了する。一旦、新しいノードを指すポ
インタを含むコピーされたノードが見つかると、単一プ
ロセッサガーベジコレクションプロセス170は、「ノ
ードが既にコピーされている」判断手順181に続き、
ノードがコピーされているかどうかを判断する。ノード
がコピーされていなければ、単一プロセッサガーベジコ
レクションプロセス170は、「ノードをコピーする」
手順183に続き、ノードをコピーする。「ノードが既
にコピーされている」判断手順181での判断に関わら
ず、単一プロセッサガーベジコレクションプロセス17
0はその後、「ポインタを更新する」手順185に続
き、新しいノードを指すポインタを更新する。単一プロ
セッサガーベジコレクションプロセス170はその後、
コピーされたノードをすべて探索し終わるまで、「コピ
ーされたノードから新しいノードを指すポインタを探
す」手順177を繰り返す。
【0020】先行技術のガーベジコレクションについて
は、Richard JonesおよびRafael Linsによる「Garbage
Collection, Algorithms for Automatic Dynamic Memor
y Management」、John Wiley & Sons、ISBN 0-471-9414
8-4、著作権1996に十分に説明されている。本明細書に
おいて、この文献を、先行技術を示すものとして参考と
して援用する。
【0021】
【発明が解決しようとする課題】世代ガーベジコレクシ
ョン手順は非常に効率的であるが、処理ユニット間でヒ
ープメモリを共有するマルチプロセッサシステムにこれ
らの手順を適用することは困難であることが先行技術で
見出されている。マルチプロセッサシステムでは、別の
プロセッサが共有ヒープに対してガーベジコレクション
を行っている間に、1つのプロセッサがノードを割り当
て得る(従って、共有ヒープを変更し得る)。この問題
点に対する先行技術の1つのアプローチは、各ポインタ
参照を調べて、そのポインタを通してアクセスされるノ
ードが移動中でないことを確認する「読み出しバリア」
を実現することである。しかし、このアプローチは、ノ
ードへの各々の読み出しアクセスのためオーバーヘッド
が生じる。読み出しバリアは、メモリアクセス制御機能
を用いて実現することも可能である。これらのメモリア
クセス制御機能は、ある範囲のメモリ場所において試み
られたアクセスを検出し、且つ、そのようなアクセスが
起こったときに例外を通知するように構成することがで
きる。このアプローチでは、各読み出し動作のためのオ
ーバーヘッドは無くなるが、その代わりに、メモリペー
ジテーブルを操作し、時折例外処理を行わなければなら
ない。さらに、コンピュータの中にはそのようなメモリ
能力を持たないものもある。
【0022】先行技術のアプローチにおける別の困難な
点は、各プロセッサによる、共有ヒープのノードへのア
クセスを調整するために、複雑な不変量(invariants)
の保守が必要とされることである。従って、同時に起こ
る変更プロセスおよびガーベジコレクションプロセスが
互いに協調しなければならない。この協調は複雑であ
り、誤りを引き起こしやすく、デバッグしにくい。
【0023】
【課題を解決するための手段】本発明によるコンピュー
タ制御方法は、少なくとも2つの処理ユニットによる変
更を受ける共有ヒープメモリのガーベジコレクションを
行うコンピュータ制御方法であって、(a)該少なくと
も2つの処理ユニットのうちの1つによって初期ガーベ
ジコレクション条件を検出するステップと、(b)該少
なくとも2つの処理ユニットによって該共有ヒープメモ
リの変更を休止するステップと、(c)該少なくとも2
つの処理ユニットにおいて、該共有ヒープメモリに対す
る世代ガーベジコレクションプロセスを開始するステッ
プと、(d)該少なくとも2つの処理ユニットにおける
該世代ガーベジコレクションプロセスの終了を検出する
ステップと、(e)該少なくとも2つの処理ユニットに
よって該共有ヒープメモリの変更を再開するステップと
を包含し、これにより上記目的が達成される。
【0024】前記ステップ(b)は、(b1)該少なく
とも2つの処理ユニットに、該共有ヒープメモリの変更
を休止するよう信号を送るステップと、(b2)該少な
くとも2つの処理ユニットが、該共有ヒープメモリの変
更を休止するのを待つステップとを包含してもよい。
【0025】前記ステップ(d)は、(d1)該少なく
とも2つの処理ユニットによって、該世代ガーベジコレ
クションプロセスが終了したことを示す信号を送るステ
ップと、(d2)該世代ガーベジコレクションプロセス
が該少なくとも2つの処理ユニットにおいて終了するの
を待つステップとを包含してもよい。
【0026】前記ヒープメモリは、カードマーク共有ヒ
ープであり、該方法は、(f)該カードマーク共有ヒー
プを複数の区画に分割するステップと、(g)該少なく
とも2つの処理ユニットのうちの1つを、該複数の区画
のうちの1つに割り当てるステップとをさらに包含して
もよい。
【0027】前記ステップ(c)は、(c1)該複数の
区画のうちの該1つの中で、該少なくとも2つの処理ユ
ニットのうちの1つによってマークが付けられたカード
を探すステップと、(c2)該マークが付けられたカー
ド内のポインタを処理するステップとをさらに包含して
もよい。
【0028】本発明による共有ヒープメモリに結合され
る少なくとも2つの処理ユニットを有する装置におい
て、該共有ヒープメモリは、該少なくとも2つの処理ユ
ニットによってアクセス可能であり、該装置は、該少な
くとも2つの処理ユニットのうちの1つによって初期ガ
ーベジコレクション条件を検出するように構成される第
1の検出機構と、該第1の検出機構に応答し、該少なく
とも2つの処理ユニットによって該共有ヒープメモリの
変更を休止するように構成される変更保留機構と、該少
なくとも2つの処理ユニットが該変更保留機構に応答し
て該共有ヒープメモリの変更を休止した後、該少なくと
も2つの処理ユニットにおいて世代ガーベジコレクショ
ンプロセスを開始するように構成される開始機構と、該
開始機構によって開始された、該少なくとも2つの処理
ユニットにおける該世代ガーベジコレクションプロセス
の終了を検出するように構成される第2の検出機構と、
該第2の検出機構に応答し、該少なくとも2つの処理ユ
ニットによって該共有ヒープメモリの変更を再開するよ
うに構成される再開機構とを含み、これにより上記目的
が達成される。
【0029】前記変更保留機構は、該少なくとも2つの
処理ユニットに該共有ヒープメモリの変更を休止させる
ように構成される第1の信号送信機構と、該少なくとも
2つの処理ユニットが該共有ヒープメモリの変更を休止
するのを待つように構成される第1の遅延機構とを含ん
でもよい。
【0030】前記第2の検出機構は、該少なくとも2つ
の処理ユニットに、該世代ガーベジコレクションプロセ
スが終了したことを示す信号を送らせるように構成され
る第2の信号送信機構と、該世代ガーベジコレクション
プロセスが該少なくとも2つの処理ユニットにおいて終
了するのを待つように構成される第2の遅延機構とを含
んでもよい。
【0031】前記共有ヒープメモリはカードマーク共有
ヒープであり、該装置は、該カードマーク共有ヒープを
複数の区画に分割するように構成される分割機構と、該
少なくとも2つの処理ユニットのうちの1つを該複数の
区画のうちの1つに割り当てるように構成される割り当
て機構とをさらに含んでもよい。
【0032】前記開始機構は、該複数の区画のうちの該
1つの中で、該少なくとも2つの処理ユニットのうちの
1つによってマークが付けられたカードを探すように構
成される探索機構と、該マークが付けられたカード内の
ポインタを処理するように構成されるポインタ処理機構
とをさらに含んでもよい。
【0033】本発明のコンピュータ制御システムは、共
有ヒープメモリに結合される少なくとも2つの処理ユニ
ットを含むコンピュータを有するコンピュータ制御シス
テムであって、該共有ヒープメモリは、該少なくとも2
つの処理ユニットによってアクセス可能であり、該シス
テムは、該少なくとも2つの処理ユニットのうちの1つ
によって初期ガーベジコレクション条件を検出するよう
に構成される第1の検出機構と、該第1の検出機構に応
答し、該少なくとも2つの処理ユニットによって該共有
ヒープメモリの変更を休止するように構成される変更保
留機構と、該少なくとも2つの処理ユニットが該変更保
留機構に応答して該共有ヒープメモリの変更を休止した
後、該少なくとも2つの処理ユニットにおいて世代ガー
ベジコレクションプロセスを開始するように構成される
開始機構と、該開始機構によって開始された、該少なく
とも2つの処理ユニットにおける該世代ガーベジコレク
ションプロセスの終了を検出するように構成される第2
の検出機構と、該第2の検出機構に応答し、該少なくと
も2つの処理ユニットによって該共有ヒープメモリの変
更を再開するように構成される再開機構とを含み、これ
により上記目的が達成される。
【0034】前記変更保留機構は、該少なくとも2つの
処理ユニットに該共有ヒープメモリの変更を休止させる
ように構成される第1の信号送信機構と、該少なくとも
2つの処理ユニットが該共有ヒープメモリの変更を休止
するのを待つように構成される第1の遅延機構とを含ん
でもよい。
【0035】前記第2の検出機構は、該少なくとも2つ
の処理ユニットに、該世代ガーベジコレクションプロセ
スが終了したことを示す信号を送らせるように構成され
る第2の信号送信機構と、該世代ガーベジコレクション
プロセスが該少なくとも2つの処理ユニットにおいて終
了するのを待つように構成される第2の遅延機構とを含
んでもよい。
【0036】前記共有ヒープメモリはカードマーク共有
ヒープであり、該システムは、該カードマーク共有ヒー
プを複数の区画に分割するように構成される分割機構
と、該少なくとも2つの処理ユニットのうちの1つを該
複数の区画のうちの1つに割り当てるように構成される
割り当て機構とをさらに含んでもよい。
【0037】前記開始機構は、該複数の区画のうちの該
1つの中で、該少なくとも2つの処理ユニットのうちの
1つによってマークが付けられたカードを探すように構
成される探索機構と、該マークが付けられたカード内の
ポインタを処理するように構成されるポインタ処理機構
とをさらに含んでもよい。
【0038】本発明によるコンピュータプログラム製品
は、コンピュータで読み出し可能なコードが組み込ま
れ、共有ヒープメモリに結合される少なくとも2つの処
理ユニットを有するコンピュータに、該共有ヒープメモ
リを変更させ且つ該共有ヒープメモリのガーベジコレク
ションを行わせるための、コンピュータで使用可能な記
憶媒体と、該コンピュータに、該少なくとも2つの処理
ユニットのうちの1つによって初期ガーベジコレクショ
ン条件を検出するように構成される第1の検出機構を実
行させるように構成される、コンピュータで読み出し可
能なプログラムコード装置と、該コンピュータに、該第
1の検出機構に応答し該少なくとも2つの処理ユニット
によって該共有ヒープメモリの変更を休止するように構
成される変更保留機構を実行させるように構成される、
コンピュータで読み出し可能なプログラムコード装置
と、該コンピュータに、該少なくとも2つの処理ユニッ
トが該変更保留機構に応答して該共有ヒープメモリの変
更を休止した後該少なくとも2つの処理ユニットにおい
て世代ガーベジコレクションプロセスを開始するように
構成される開始機構を実行させるように構成される、コ
ンピュータで読み出し可能なプログラムコード装置と、
該コンピュータに、該開始機構によって開始された該少
なくとも2つの処理ユニットにおける該世代ガーベジコ
レクションプロセスの終了を検出するように構成される
第2の検出機構を実行させるように構成される、コンピ
ュータで読み出し可能なプログラムコード装置と、該コ
ンピュータに、該第2の検出機構に応答し該少なくとも
2つの処理ユニットによって該共有ヒープメモリの変更
を再開するように構成される再開機構を実行させるよう
に構成される、コンピュータで読み出し可能なプログラ
ムコード装置とを含み、これにより上記目的が達成され
る。
【0039】前記変更保留機構は、該コンピュータに、
該少なくとも2つの処理ユニットに該共有ヒープメモリ
の変更を休止させるように構成される第1の信号送信機
構を実行させるように構成される、コンピュータで読み
出し可能なプログラムコード装置と、該コンピュータ
に、該少なくとも2つの処理ユニットが該共有ヒープメ
モリの変更を休止するのを待つように構成される第1の
遅延機構を実行させるように構成される、コンピュータ
で読み出し可能なプログラムコード装置とを含んでもよ
い。
【0040】前記第2の検出機構は、該コンピュータ
に、該少なくとも2つの処理ユニットに該世代ガーベジ
コレクションプロセスが終了したことを示す信号を送ら
せるように構成される第2の信号送信機構を実行させる
ように構成される、コンピュータにより読み出し可能な
プログラムコード装置と、該コンピュータに、該世代ガ
ーベジコレクションプロセスが該少なくとも2つの処理
ユニットにおいて終了するのを待つように構成される第
2の遅延機構を実行させるように構成される、コンピュ
ータにより読み出し可能なプログラムコード装置とを含
んでもよい。
【0041】前記共有ヒープメモリはカードマーク共有
ヒープであり、該製品は、該コンピュータに、該カード
マーク共有ヒープを複数の区画に分割するように構成さ
れる分割機構を実行させるように構成される、コンピュ
ータで読み出し可能なプログラムコード装置と、該コン
ピュータに、該少なくとも2つの処理ユニットのうちの
1つを該複数の区画のうちの1つに割り当てるように構
成される割り当て機構を実行させるように構成される、
コンピュータで読み出し可能なプログラムコード装置と
をさらに含んでもよい。
【0042】前記開始機構は、該コンピュータに、該複
数の区画のうちの該1つの中で該少なくとも2つの処理
ユニットのうちの1つによってマークが付けられたカー
ドを探すように構成される探索機構を実行させるように
構成される、コンピュータで読み出し可能なプログラム
コード装置と、該コンピュータに、該マークが付けられ
たカード内のポインタを処理するように構成されるポイ
ンタ処理機構を実行させるように構成される、コンピュ
ータで読み出し可能なプログラムコード装置とをさらに
含んでもよい。
【0043】本発明は、マルチプロセッサ環境において
ガーベジコレクションプログラムの拡張された動作を与
えるための経済的な装置、方法、システムおよびコンピ
ュータプログラム製品を提供する。本発明の1つの局面
は、複数の処理ユニットによる変更を受ける共有ヒープ
メモリのガーベジコレクションを行うコンピュータ制御
方法である。この方法は、複数の処理ユニットのうちの
1つによって初期ガーベジコレクション条件を検出する
ステップを含む。この方法はまた、複数の処理ユニット
による共有ヒープメモリの変更を休止するステップと、
複数の処理ユニットにおいて世代ガーベジコレクション
プロセスを開始するステップとを含む。この方法はその
後、複数の処理ユニットにおける世代ガーベジコレクシ
ョンプロセスの終了を検出するステップを行う。一旦、
ガーベジコレクションプロセスの終了が検出されると、
この方法は、複数の処理ユニットによる共有ヒープメモ
リの変更を再開するステップを行う。
【0044】本発明の別の局面は、共有ヒープメモリに
結合される複数の処理ユニットを有する装置である。共
有ヒープメモリは、複数の処理ユニットによってアクセ
ス可能である。この装置は、複数の処理ユニットのうち
の1つによって初期ガーベジコレクション条件を検出す
るように構成される第1の検出機構を含む。この装置は
また、第1の検出機構に応答しする変更保留機構を含
む。変更保留機構は、複数の処理ユニットによる共有ヒ
ープメモリの変更を休止するように構成される。さら
に、この装置は、複数の処理ユニットが変更保留機構に
応答して共有ヒープメモリの変更を休止した後複数の処
理ユニットにおいて世代ガーベジコレクションプロセス
を開始するように構成される開始機構を含む。この装置
はまた、複数の処理ユニットにおける世代ガーベジコレ
クションプロセスの終了を検出するように構成される第
2の検出機構を含む。これらの世代ガーベジコレクショ
ンプロセスは、開始機構によって開始される。この装置
はまた、複数の処理ユニットによる共有ヒープメモリの
変更を再開するように構成される再開機構を含む。この
再開機構は、第2の検出機構に応答する。
【0045】本発明の他の局面は、共有ヒープメモリに
結合される複数の処理ユニットを含むコンピュータを有
するシステムである。共有ヒープメモリは、複数の処理
ユニットによってアクセス可能である。このシステム
は、複数の処理ユニットのうちの1つによって初期ガー
ベジコレクション条件を検出するように構成される第1
の検出機構を含む。このシステムはまた、第1の検出機
構に応答する変更保留機構を含む。変更保留機構は、複
数の処理ユニットによる共有ヒープメモリの変更を休止
するように構成される。さらに、このシステムは、複数
の処理ユニットが変更保留機構に応答して共有ヒープメ
モリの変更を休止した後、複数の処理ユニットにおいて
世代ガーベジコレクションプロセスを開始するように構
成される開始機構を含む。このシステムはまた、複数の
処理ユニットにおける世代ガーベジコレクションプロセ
スの終了を検出するように構成される第2の検出機構を
含む。これらのガーベジコレクションプロセスは、開始
機構によって開始される。このシステムはまた、複数の
処理ユニットによる共有ヒープメモリの変更を再開する
ように構成される再開機構を含む。この再開機構は、第
2の検出機構に応答する。
【0046】本発明のさらに他の局面は、共有ヒープメ
モリに結合される複数の処理ユニットを有するコンピュ
ータに、共有ヒープメモリを変更させ且つ共有ヒープメ
モリのガーベジコレクションを行わせるための、コンピ
ュータで使用可能な記憶媒体に組み込まれた、コンピュ
ータプログラム製品である。コンピュータで読み出し可
能なコードは、コンピュータで実行されると、コンピュ
ータに第1の検出機構、変更保留機構、開始機構、第2
の検出機構、および再開機構を実行させる。これらの機
構の各々は、上で説明した装置のための対応する機構と
同じ機能を有する。
【0047】本明細書では、方法、装置、システムおよ
びコンピュータプログラム製品が開示されており、多数
の処理ユニットによって共有されるカードマークヒープ
メモリに対する世代ガーベジコレクションが説明されて
いる。処理ユニットのうちの1つが、ノード作成のため
に利用可能な空きスペースが閾値未満であることを検出
すると、その処理ユニットは、ヒープ変更プロセスを休
止し、その他の処理ユニットにも変更を休止するよう信
号を送る。これらの処理ユニットは、ヒープの変更を休
止すると、共有ヒープに対して世代ガーベジコレクショ
ン手順の実行するプロセスに進む。各処理ユニットの世
代ガーベジコレクション手順は、共有カードマークヒー
プの特定の区画内のポインタとともに、各処理ユニット
のレジスタ、スタックおよびスタティック変数に格納さ
れたポインタによって動作される。処理ユニットは、ガ
ーベジコレクションプロセスを終了すると、ヒープの変
更を再開する。
【0048】
【発明の実施の形態】本発明の上記局面およびその他の
局面は、添付の図面に示す好適な実施形態についての以
下の詳細な説明を読めば、当業者に明らかとなる。
【0049】[注釈および用語]以下の「注釈および用
語」は、本発明およびその好適な実施形態の理解を助け
るために与えるものである。
【0050】 「ノード」−ヒープから割り当てられるメモリ領域 「オブジェクト」−生成されたオブジェクトはノードに
ある。オブジェクトは、一般に、インスタンス変数と、
オブジェクトの方法を参照するクラスを指すポインタと
を含む。 「ポインタ」−ノードへのアドレスとして用いられる
値。ノードを指すポインタの位置を特定することによっ
て、ガーベジコレクションアルゴリズムは、どのノード
が存続しているかを判断する。 「手順」−所望の結果をもたらすステップの一貫した
(self-consistent)シーケンス。これらのステップ
は、物理量の物理的操作を必要とするステップである。
通常、これらの物理量は、格納、転送、結合、比較およ
びその他の操作を行うことができる電気信号あるいは磁
気信号の形態をとる。これらの信号は、ビット、値、要
素、記号、文字、項、数などと呼ばれる。これらの用語
およびそれに類似した用語はすべて、適切な物理量と関
連づけられ、単にこれらの物理量に与えれられる便宜上
のラベルに過ぎないことが当業者によって理解されるで
あろう。
【0051】[概要]コンピュータ命令を実行する際に
コンピュータが行う操作は、しばしば、人間のオペレー
タが頭脳で行う動作に通常関連する、加算あるいは比較
などの用語で呼ばれる。本発明では、人間のオペレータ
のそのような能力は、本明細書で説明する動作のいずれ
においても必要でない。これらの動作は、マシン動作で
ある。本発明の動作を行うために有用なマシンとして
は、プログラムされた汎用デジタルコンピュータ、ある
いはそれと同様の装置などがある。すべての場合につい
て、計算方法は、コンピュータを動作させる際の動作方
法とは区別される。本発明は、電気信号あるいはその他
の(例えば、機械的あるいは化学的な)物理信号を処理
して他の所望の物理信号を生成する際にコンピュータを
動作させる方法ステップに関する。
【0052】本発明はまた、これらの動作を行うための
装置に関する。この装置は、必要とされる目的のために
特別に構成され得る。あるいは、この装置は、コンピュ
ータのメモリに格納されたコンピュータプログラムによ
って選択的に活性化または再構成されるような汎用コン
ピュータを含み得る。本明細書で示した手順は、特定の
コンピュータあるいはその他の装置に本質的には関連し
ていない。特に、様々な汎用マシンが、本明細書の教示
に従って書き込まれるプログラムとともに用いられ得
る。あるいは、必要とされる方法ステップを行うために
より専門化された装置を構成することがより都合がよい
ことがわかるであろう。さまざまなこれらのマシンのた
めに必要とされる構造は、以下の説明から明らかになる
であろう。また、本発明は、コンピュータにプログラム
ロジックを遂行させるプログラムを符号化した、コンピ
ュータで読み出し可能な記憶媒体において実現され得
る。
【0053】図面および例示では、コンピュータメモリ
ワード内の特定のビット順序を用いているが、実際のビ
ット順序は、本発明には無関係であることが当業者には
明らかであろう。さらに、当業者は、メモリのデータ構
造の例示は、構造の頂部にあるより低いアドレス位置の
メモリから始まり、より高いアドレス位置のメモリに及
ぶ。
【0054】[動作環境]図2には、マルチプロセッサ
コンピュータ全体を参照番号200で示されており、こ
のマルチプロセッサコンピュータのエレメントであっ
て、本発明を支持するように構成される幾つかのエレメ
ントが示されている。図2では、少なくとも2つの処理
ユニット203(例えば、第1のCPU205および第
2のCPU207)と、共有ヒープメモリ209と、入
/出力(I/O)部211とを有する中央処理装置(C
PU)201が示されている。入/出力(I/O)部2
11は、ディスク記憶ユニット213およびCD−RO
Mドライブユニット215に接続される。CD−ROM
ドライブユニット215は、典型的にはプログラムおよ
びデータ219を含むCD−ROM媒体217を読み出
すことができる。ユーザ制御装置221は、マルチプロ
セッサコンピュータ200へのアクセスの直接的な制
御、あるいはネットワークを通した制御、あるいはその
他の何らかの等価な手段を通した制御を、ユーザに与え
る。CD−ROM装置ユニット215は、CD−ROM
媒体217およびディスク記憶ユニット213と共に、
ファイル記憶機構を含む。そのようなコンピュータシス
テムは、本発明を実施するアプリケーションを実行する
ことができる。
【0055】図3は、ヒープメモリのノードを示してお
り、このヒープメモリ全体を参照番号300で示してい
る。このノードは、「ノードロック」フィールド303
および「ガーベジコレクション(GC)状態」フィール
ド304を含むノードヘッダ301を含む。当業者は、
ノードヘッダ301が、ノードの固有情報を含み、その
他のヒープ管理情報を含み得ることを理解するであろ
う。「ノードロック」フィールド303は、当業者が、
他の処理ユニットについてノードをロックすることがで
きるようにする情報を含む。「ガーベジコレクション状
態」フィールド304は、世代ガーベジコレクションプ
ロセスに固有の情報を含む。この情報は、ノードが促進
されたかどうかの情報を含む。ノード300はまた、変
更が、変更に固有の情報を格納するために用いる「ノー
ド格納」領域305を含む。
【0056】図4Aは、「ノード割り当て」プロセスを
示しており、このプロセス全体を参照番号400で示
す。このプロセス400は、「開始」ターミナル401
で始まり、「ノード割り当て」手順403に続く。「ノ
ード割り当て」手順403は、処理ユニットのうちの1
つで実行され、共有ヒープメモリ209からノードを割
り当てる。一旦ノードが得られると、「ノード割り当
て」プロセス400は、「閾値を越えた」判断手順40
5に続き、「ノード割り当て」手順403によって、将
来の割り当てに利用可能な共有メモリの量が閾値未満に
減ったかどうかを判断する。即ち、「ノード割り当て」
手順403が、制限されたヒープメモリ条件を生成した
かどうかを判断する。この閾値に達していなければ、
「ノード割り当て」プロセス400は、「終了」ターミ
ナル407を通って終了する。しかし、閾値に達する
と、「ノード割り当て」プロセス400は、「変更休
止」手順408に続き、共有ヒープメモリ209を変更
することができる処理ユニットでのコードの実行を休止
する。当業者は、ガーベジコレクションを開始するため
に、メモリ閾値を越えるという条件以外の条件があるこ
とを理解するであろう。これらの方法には、時間あるい
はカウンタの満了があるが、これに限定されるわけでは
ない。「変更の休止を示す」手順409は、この処理ユ
ニットが共有ヒープメモリ209の変更を休止したこと
を、その他の処理ユニットに示す。次に、「ガーベジコ
レクション同期を開始する」手順410は、処理ユニッ
トとの同期プロセスを信号で知らせる。その後、「ノー
ド割り当て」プロセス400は、「変更の休止を待つ」
手順411に続き、共有ヒープメモリ209を変更する
ことができる他の処理ユニットをモニタする。「変更の
休止を待つ」手順411は、これらの処理ユニットが、
その変更プロセスを休止したことを信号で知らせるまで
待つ。一旦、すべての処理ユニットが変更プロセスを休
止すると、「ノード割り当て」プロセス400は、「ガ
ーベジコレクション」手順413に進み、以下に説明す
るように、共有ヒープメモリ209で世代ガーベジコレ
クションプロセスを行う。処理ユニットがガーベジコレ
クション動作を終了すると、「ノード割り当て」プロセ
ス400は、「ガーベジコレクション段階の終了を示
す」手順415に進み、この処理ユニットがガーベジコ
レクション処理を終了したことをその他の処理ユニット
に信号で知らせる。次に、「ノード割り当て」プロセス
400は、「他の処理ユニットがガーベジコレクション
を終了するのを待つ」手順417に続き、その他の処理
ユニットの状態をモニタして、すべての処理ユニットが
ガーベジコレクションを終了したことを検出する。共有
ヒープメモリ209に対してガーベジコレクションを行
うことができるすべての処理ユニットが、ガーベジコレ
クションが終了したことを示すと、「変更を再開する」
手順419で、変更が再開される。その後、「ノード割
り当て」プロセス400は、「終了」ターミナル407
を通って終了する。
【0057】図4Bは、「ガーベジコレクション段階検
出」プロセスを示しており、このプロセス全体を参照番
号450で示す。このプロセス450は、「開始」ター
ミナル451で始まり、「ガーベジコレクション同期が
開始された」判断手順453に続く。この「ガーベジコ
レクション段階検出」プロセス450は、各処理ユニッ
トが呼出命令、または後方分岐命令を実行するか、ある
いは、各処理ユニットがランタイムサポートルーチンか
ら戻る準備ができていれば、その処理ユニットで呼び出
され得る。当業者は、これらの状況は例示であって、本
発明はその他の条件によっても呼び出され得ることを理
解するであろう。「ガーベジコレクション同期が開始さ
れた」判断手順453は、変更を中止する信号(例え
ば、「ガーベジコレクション同期を開始する」手順41
0で設定されるような信号)が生じたかどうかを判断す
る。信号が生じていなければ、「ガーベジコレクション
段階検出」プロセス450は、「終了」ターミナル45
5を通って終了する。しかし、信号が生じていれば、
「ガーベジコレクション段階検出」手順450は、「変
更を休止する」手順457に続き、処理ユニットで実行
するすべてのプロセスが、共有ヒープメモリ209を変
更することを禁止する。一般に、これは、共有ヒープメ
モリ209にアクセスするスレッドあるいはプロセスを
保留することによって達成される。これらのプロセスが
共有ヒープメモリ209を変更することを禁止される
と、「ガーベジコレクション段階検出」プロセス450
は、「変更の休止を示す」手順459に続く。この「変
更の休止を示す」手順459は、この処理ユニットが変
更を休止したことを信号で示す。次に、「他の処理ユニ
ットが変更を休止するまで待つ」手順461で、その他
の処理ユニットの信号をモニタし、これらの処理ユニッ
トが変更を休止したかどうかを判断する。一旦、これら
の処理ユニットが変更を休止すると、これらの処理ユニ
ットのうちの1つ以上が、「ガーベジコレクションを行
う」手順463に続く。以下に説明するように、「ガー
ベジコレクションを行う」手順463は、世代ガーベジ
コレクションプロセスの変形である。「ガーベジコレク
ションを行う」手順463が終わると、「ガーベジコレ
クション段階検出」プロセス450は、「ガーベジコレ
クション段階の終了を示す」手順465に続き、この処
理ユニットが「ガーベジコレクションを行う」手順46
3を終了したという信号を生成する。その後、この処理
ユニットは、「他の処理ユニットがガーベジコレクショ
ンを終了するのを待つ」手順467で、他の処理ユニッ
トもガーベジコレクションの終了を信号で知らせたこと
を検出するまで待つ。一旦、他の処理ユニットがガーベ
ジコレクションプロセスの終了を信号で知らせると、そ
れぞれの処理ユニットの「変更を再開する」手順469
で、「変更を休止する」手順457で禁止されたプロセ
スにより、共有ヒープメモリ209の変更を再開する。
最後に、「ガーベジコレクション段階検出」プロセス4
50は、「終了」ターミナル455を通って終了する。
【0058】図5は、図4Aおよび図4Bについて以前
に説明したプロセスのシーケンスを示す事象時間線であ
り、この時間線全体を参照番号500で示す。時間の矢
501は、増加する時間の方向を示す。変更事象線50
3よりも下にある線は、処理ユニットが変更を行うこと
ができることを示す。ガーベジコレクション事象線50
5よりも上にある線は、処理ユニットが世代ガーベジコ
レクションを行うことができることを示す。事象時間線
500は、本発明に関連する事象は事象線でそれぞれ表
される4つのパラレル処理ユニットの使用ができること
を示す。これらの4つの処理ユニットを表す事象線のう
ち、第1の処理ユニット事象線507は、第1の処理ユ
ニットの変更動作および世代ガーベジコレクション動作
を表す。第2の処理ユニット事象線509は、第2の処
理ユニットの変更動作および世代ガーベジコレクション
動作を表す。第3の処理ユニット事象線511および第
4の処理ユニット事象線513はそれぞれ、第3の処理
ユニットおよび第4の処理ユニットの変更動作および世
代ガーベジコレクション動作を表す。同じ処理ユニット
の異なる処理状態を示すために、これらの線507、5
09、511および513の参照番号に「’」およ
び「”」の記号を付している。処理ユニットが共有ヒー
プメモリ209を変更することができるとき、その処理
ユニットの線は水平であり、変更事象線503よりも下
にある。処理ユニットが共有ヒープメモリ209に対し
てガーベジコレクションを行うことができるとき、その
処理ユニットの線は水平であり、ガーベジコレクション
事象線505よりも上にある。線が水平でない場合、そ
の処理ユニットは、共有ヒープメモリ209に対してガ
ーベジコレクションを行うことができないか、あるい
は、共有ヒープメモリ209を変更することができず、
その他の処理ユニットと同期するのを待っている状態で
ある。マルチプロセッサ事象線515は、マルチプロセ
ッサがいつ共有ヒープメモリ209を変更することがで
きるかを示すか、あるいは、マルチプロセッサがいつ共
有ヒープメモリ209に対してガーベジコレクションを
行うことができるかを示す。従って、開始の時点では、
これらの線507、509、511および513によっ
て表される処理ユニットがすべて共有ヒープメモリ20
9を変更することができる。従って、マルチプロセッサ
事象線515は、変更事象線503上にある。ある時点
で、第1の処理ユニット事象線507によって表される
処理ユニットの変更プログラムは、図4Aに関して以前
に説明したプロセスに従って、ヒープからノードを割り
当てるよう試み、ヒープの作成領域の空きスペースが閾
値未満であると判断する。その後、第1の処理ユニット
は変更を保留し、ガーベジコレクトインジケータを生成
して、その他の処理ユニットが同様に変更を休止するの
を待つ。この時点で、第1の処理婦ニットを表す線は、
「変更保留同期」事象517に向かって傾き始める。そ
の他の処理ユニットは、第1の処理ユニットによってア
サートされたガーベジコレクトインジケータを検出する
と、同様に変更を保留し、それぞれのガーベジコレクト
インジケータを生成する。最終的に、最後の処理ユニッ
ト(第4の処理ユニット事象線513によって表され
る)が変更を保留し、これらの線507、509、51
1および513の「変更保留同期」事象517で集ま
り、これにより、これらの処理ユニットが同期されてい
ること、および共有ヒープメモリ209がこれ以上変更
されないことが示される。共有ヒープメモリ209がこ
れ以上変更されないため、この時点で、マルチプロセッ
サ世代ガーベジコレクションプロセスは非常に簡略化さ
れる。一旦、これらの線507、509、511および
513が「変更保留同期」事象517に集まると、マル
チプロセッサ事象線515は、変更事象線503からガ
ーベジコレクション事象線505に遷移する。今、処理
ユニット507’、509’、511’および513’
の各々が、以下に説明するように、共有ヒープメモリ2
09のガーベジコレクションを開始する。処理ユニット
507’、509’、511’および513’の各々
は、世代ガーベジコレクションプロセスを終了すると、
その他の処理ユニットが世代ガーベジコレクションプロ
セスを終了するのを待つ。この条件は、「ガーベジコレ
クション終了同期」事象519で満たされる。一旦、処
理ユニットが同期され、すべてのガーベジノードが回復
されたことを示すと、マルチプロセッサ事象線515
は、ガーベジコレクション事象線505から変更事象線
503に遷移し、各処理ユニットは、「”」の符号を付
けた事象線507”、509”、511”および51
3”によって示されるように変更動作を再開する。
【0059】処理ユニットは、一旦世代ガーベジコレク
ションを開始すると、共有ヒープメモリ209のノード
を処理する際に、処理ユニット間で妨害してはならな
い。以前に説明したように、ガーベジコレクションプロ
セスは、プロセッサのスタック、スタティック変数、お
よびヒープからのポインタのルート集合を生成する。マ
ルチプロセッサ環境では、各処理ユニットは、それ自体
のローカルスタティックおよびスタック変数においてポ
インタの位置を特定する。しかし、共有ヒープメモリ2
09を走査してポインタを探すプロセスは、処理ユニッ
ト間で共有しなければならない。
【0060】図6Aは、カードマーク共有ヒープメモリ
を示し、このヒープメモリ全体を参照番号600で示
す。カードマーク共有ヒープメモリ600は、図1Bに
示すカードにマークが付けられるマーク共有ヒープメモ
リ120と類似しており、共有ヒープメモリのカードマ
ーク領域601、第1のカード603、最終カード60
5、複数のノード607、第1のカードマーカ609、
および第2のカードマーカ611を含む。第1のカード
マーカ609および第2のカードマーカ611は、カー
ドマークベクトル613に含まれる。ガーベジコレクシ
ョンを行う4つの処理ユニットを有するマルチプロセッ
サコンピュータの場合、カードマーク共有ヒープメモリ
600は、4つの区画に分けられる。即ち、第1のプロ
セッサ区画615、第2のプロセッサ区画617、第3
のプロセッサ区画619、および第4のプロセッサ区画
621である。各区画615、617、619、621
に対応する処理ユニットは、カードマークベクトル61
3のそれぞれの区画を走査し、共有ヒープメモリ601
のカードマーク領域の対応する部分において変更された
ポインタの位置を特定し、且つそのポインタを処理す
る。図6Aは、第1のカードマーカ609にマークが付
けられている状態を示す。従って、第1の処理ユニット
は、カードマークベクトル613の第1のプロセッサ区
画615を走査すると、第1のカード603を走査し
て、ポインタの位置を特定する。その他の処理ユニット
も、カードマークベクトル613のそれぞれの部分を走
査する。他のカードはマークされていないため、これら
の処理ユニットは、共有ヒープメモリ601のカードマ
ーク領域のそれぞれの部分を走査する必要はない。
【0061】図6Bは、マルチプロセッサ世代ガーベジ
コレクションプロセスを示しており、このプロセス全体
を参照番号650で示す。各処理ユニットは、「ガーベ
ジコレクションを行う」手順413あるいは「ガーベジ
コレクションを行う」手順463のいずれかによって呼
び出されると、マルチプロセッサ世代ガーベジコレクシ
ョンプロセス650を行う。マルチプロセッサ世代ガー
ベジコレクションプロセス650は、「開始」ターミナ
ル651で始まり、「処理ユニットに割り当てられたポ
インタの位置を特定する」手順653に続く。「処理ユ
ニットに割り当てられたポインタの位置を特定する」手
順653で、マルチプロセッサ世代ガーベジコレクショ
ンプロセス650を実行している処理ユニットに割り当
てられたカードマークベクトル613の部分からの判断
に応じて、変更プログラムのスタック、変数およびヒー
プを調べて、ポインタを探す。次に、マルチプロセッサ
世代ガーベジコレクションプロセス650は、「存続ノ
ードをスカビンジする」手順655に続き、「処理ユニ
ットに割り当てられたポインタの位置を特定する」手順
653で見つかった存続ノードをスカビンジする。マル
チプロセッサ世代ガーベジコレクションプロセス650
は、これらのポインタを処理し終わるまで、「処理ユニ
ットに割り当てられたポインタの位置を特定する」手順
653および「存続ノードをスカビンジする」手順65
5を繰り返す。その後、マルチプロセッサ世代ガーベジ
コレクションプロセス650は、「コピーされたノード
から、新しいノードを指すポインタを探す」手順657
に続き、コピーされたノードで新しいノードを参照する
ポインタの位置を特定する。マルチプロセッサ世代ガー
ベジコレクションプロセス650は、コピーされたノー
ドをすべて探索し終わると、「終了」ターミナル659
を通って終了する。一旦、新しいノードを指すポインタ
を含むコピーされたノードが発見されると、マルチプロ
セッサ世代ガーベジコレクションプロセス650は、
「ノードが既にコピーされている」判断手順661に続
き、ノードがコピーされているかどうかを判断する。ノ
ードがコピーされていなければ、マルチプロセッサ世代
ガーベジコレクションプロセス650は、「ノードをコ
ピーする」手順663に続き、ノードをコピーする。そ
の後、「ノードが既にコピーされている」判断手順66
1での判断に関わらず、マルチプロセッサ世代ガーベジ
コレクションプロセス650は、「ポインタを更新す
る」手順665に続き、新しいノードを指すポインタを
更新する。その後、マルチプロセッサ世代ガーベジコレ
クションプロセス650は、コピーされたノードをすべ
て探索し終わるまで、「コピーされたノードから新しい
ノードを指すポインタを探す」手順657を繰り返す。
【0062】図6Cは、マルチプロセッサガーベジコレ
クションプロセスを示しており、このプロセス全体を参
照番号670で示す。マルチプロセッサガーベジコレク
ションプロセス670は、「コピーされたノードから新
しいノードを指すポインタを探す」手順657によって
呼び出され、「開始」ターミナル671で始まる。その
後、マルチプロセッサガーベジコレクションプロセス6
70は、「第1のノードに進む」手順673に進み、処
理ユニットがガーベジコレクションを行う共有ヒープメ
モリ209において第1のノードの位置を特定する。次
に、「原子テスト(atomic test)およびロック」手順
675で、当業者に十分に理解される技術を用いてノー
ドをロックしようと試みる。新しい世代の各ノードは、
スカビンジする前にロックしなければならない。当業者
は、より古い世代のノードは、用いたカードマーキング
技術およびガーベジコレクション技術に依存して、ロッ
クする必要がある場合があることを理解するであろう。
「ノードが別の処理ユニットによってロックされてい
る」判断手順677で、ノードが別の処理ユニットによ
ってロックされていれば、「ノードがまだロックされて
いる」手順678に続く。「ノードがまだロックされて
いる」手順678は、ノードのロックが解除されるまで
繰り返される。ノードが別の処理ユニットによってロッ
クされていなければ、「原子テストおよびロック」手順
675は成功であり、この処理ユニットで使用するため
にノードをロックする。従って、「ノードが別の処理ユ
ニットによってロックされている」判断手順677は満
足されない。この状況では、その後、マルチプロセッサ
ガーベジコレクションプロセス670は、「ノードが以
前にスカビンジされた」判断手順679に進み、ノード
の「ガーベジコレクション状態」フィールド304を調
べて、ノードが別の処理ユニットによって既にスカビン
ジされたかどうかを判断する。ノードが以前にスカビン
ジされていなければ、マルチプロセッサガーベジコレク
ションプロセス670は、「ノードをスカビンジする」
手順680に続く。その後、「ノードをスカビンジす
る」手順680で、当業者によって理解されるように、
ノードに対してスカビンジ動作を行う。しかし、「ノー
ドが以前にスカビンジされた」判断手順679で、ノー
ドがスカビンジされたと判断されると、マルチプロセッ
サガーベジコレクションプロセス670は、「ポインタ
を更新する」手順681に続き、ポインタを更新する。
さらに、「ノードがまだロックされている」判断手順6
78で、ノードが別の処理ユニットによってロックされ
なくなったと判断されると、あるいは、「ノードをスカ
ビンジする」手順680でノードがスカビンジされる
と、マルチプロセッサガーベジコレクションプロセス6
70は、「ポインタを更新する」手順681に続く。
「ポインタを更新する」手順681でポインタが更新さ
れると、マルチプロセッサガーベジコレクションプロセ
ス670は、「ノードのロックを解除する」手順682
に続き、ノードがロックされていれば、そのロックを解
除して、他の処理ユニットが、必要であればノードに対
して動作を行うことができるようにする。次に、マルチ
プロセッサガーベジコレクションプロセス670は、
「次のノードに進む」手順683に続き、共有ヒープメ
モリ209において、この処理ユニットがスカビンジす
る必要のあるその次のノードの位置を特定する。その
後、「ノードを発見した」判断手順685で、「次のノ
ードに進む」手順683がこの処理ユニットがスカビン
ジする別のノードの位置を特定したかどうかを判断す
る。もし「次のノードに進む」手順683で別のノード
の位置を特定していれば、マルチプロセッサガーベジコ
レクションプロセス670は、「原子テストおよびロッ
ク」手順675に戻り、処理を続ける。そうでなけれ
ば、マルチプロセッサガーベジコレクションプロセス6
70は、「終了」ターミナル687を通って終了する。
【0063】当業者は、これまで説明してきた発明が、
ヒープメモリを共有するマルチプロセッサコンピュータ
システムに世代ガーベジコレクション機能を与える方
法、システム、装置およびプログラミング製品を教示し
ていることを理解するであろう。
【0064】以上、本発明を現在好ましい実施形態につ
いて説明してきたが、当業者は、本発明の範囲から逸脱
することなく様々な変形および変更を行うことができる
ことを理解するであろう。従って、本発明の範囲は、本
明細書で説明した特定の実施形態に限定されるわけでは
なく、前掲の特許請求の範囲およびそれと等価なものに
よってのみ規定されるべきである。
【0065】
【発明の効果】上述したように本発明によれば、少なく
とも2つの処理ユニットによる変更を受ける共有ヒープ
メモリのガーベジコレクションを行うコンピュータ制御
方法であって、(a)該少なくとも2つの処理ユニット
のうちの1つによって初期ガーベジコレクション条件を
検出するステップと、(b)該少なくとも2つの処理ユ
ニットによって該共有ヒープメモリの変更を休止するス
テップと、(c)該少なくとも2つの処理ユニットにお
いて、該共有ヒープメモリに対する世代ガーベジコレク
ションプロセスを開始するステップと、(d)該少なく
とも2つの処理ユニットにおける該世代ガーベジコレク
ションプロセスの終了を検出するステップと、(e)該
少なくとも2つの処理ユニットによって該共有ヒープメ
モリの変更を再開するステップとを包含する。これによ
り、従来困難であったヒープメモリを共有するマルチプ
ロセッサコンピュータシステムに世代ガーベジコレクシ
ョン機能を与えることができる。
【図面の簡単な説明】
【図1A】先行技術の共有ヒープ領域を示す図である。
【図1B】カードマーキングの使用を説明する図であ
る。
【図1C】先行技術のヒープ割り当てプロセスを説明す
る図である。
【図1D】存続ノードをスカビンジするために用いられ
る先行技術の単一プロセッサガーベジコレクションプロ
セスを示す図である。
【図2】本発明の好適な実施形態を用いることができる
マルチプロセッサコンピュータシステムを示す図であ
る。
【図3】本発明の好適な実施形態による共有ヒープ中の
ノードの構造を示す図である。
【図4A】本発明の好適な実施形態による共有ヒープ割
り当てプロセスを説明する図である。
【図4B】本発明の好適な実施形態による共有ヒープ割
り当てプロセスを説明する図である。
【図5】本発明の好適な実施形態による事象時間線を示
す図である。
【図6A】本発明の好適な実施形態に従った、多数の処
理ユニットによる処理のために区画分けされたカードマ
ークヒープを示す図である。
【図6B】本発明の好適な実施形態による、区画分けさ
れたヒープを用いたプロセスを説明する図である。
【図6C】本発明の好適な実施形態による、この区画分
けされたヒープを用いたプロセスを説明する図である。
【符号の説明】
200 マルチプロセッサコンピュータ 203 処理ユニット 205 第1のCPU 207 第2のCPU 209 共有ヒープメモリ 211 入/出力(I/O)部 213 ディスク記憶ユニット 215 CD−ROMドライブユニット 217 CD−ROM媒体 219 プログラムおよびデータ 300 ヒープメモリ 301 ノードヘッダ 303 「ノードロック」フィールド 304 「ガーベジコレクション(GC)状態」フィー
ルド 305 「ノード格納」領域 600 カードマーク共有ヒープメモリ 601 カードマーク領域 603 第1のカード 605 最終カード 607 ノード 609 第1のカードマーカ 611 第2のカードマーカ 613 カードマークベクトル 615 第1のプロセッサ区画 617 第2のプロセッサ区画 619 第3のプロセッサ区画 621 第4のプロセッサ区画
───────────────────────────────────────────────────── フロントページの続き (72)発明者 マリオ アイ. ウォルツコ アメリカ合衆国 カリフォルニア 94306, パロ アルト, アラスタデロ ロード 580

Claims (20)

    【特許請求の範囲】
  1. 【請求項1】 少なくとも2つの処理ユニットによる変
    更を受ける共有ヒープメモリのガーベジコレクションを
    行うコンピュータ制御方法であって、 (a)該少なくとも2つの処理ユニットのうちの1つに
    よって初期ガーベジコレクション条件を検出するステッ
    プと、 (b)該少なくとも2つの処理ユニットによって該共有
    ヒープメモリの変更を休止するステップと、 (c)該少なくとも2つの処理ユニットにおいて、該共
    有ヒープメモリに対する世代ガーベジコレクションプロ
    セスを開始するステップと、 (d)該少なくとも2つの処理ユニットにおける該世代
    ガーベジコレクションプロセスの終了を検出するステッ
    プと、 (e)該少なくとも2つの処理ユニットによって該共有
    ヒープメモリの変更を再開するステップとを包含する、
    方法。
  2. 【請求項2】 前記ステップ(b)は、 (b1)前記少なくとも2つの処理ユニットに、前記共
    有ヒープメモリの変更を休止するよう信号を送るステッ
    プと、 (b2)該少なくとも2つの処理ユニットが、該共有ヒ
    ープメモリの変更を休止するのを待つステップとを包含
    する、請求項1に記載の方法。
  3. 【請求項3】 前記ステップ(d)は、 (d1)前記少なくとも2つの処理ユニットによって、
    前記世代ガーベジコレクションプロセスが終了したこと
    を示す信号を送るステップと、 (d2)該世代ガーベジコレクションプロセスが該少な
    くとも2つの処理ユニットにおいて終了するのを待つス
    テップとを包含する、請求項1に記載の方法。
  4. 【請求項4】 前記共有ヒープメモリは、カードマーク
    共有ヒープであり、前記方法は、 (f)該カードマーク共有ヒープを複数の区画に分割す
    るステップと、 (g)前記少なくとも2つの処理ユニットのうちの1つ
    を、該複数の区画のうちの1つに割り当てるステップと
    をさらに包含する、請求項1に記載の方法。
  5. 【請求項5】前記ステップ(c)は、 (c1)前記複数の区画のうちの前記1つの中で、前記
    少なくとも2つの処理ユニットのうちの1つによってマ
    ークが付けられたカードを探すステップと、 (c2)該マークが付けられたカード内のポインタを処
    理するステップとをさらに包含する、請求項4に記載の
    方法。
  6. 【請求項6】 共有ヒープメモリに結合される少なくと
    も2つの処理ユニットを有する装置であって、該共有ヒ
    ープメモリは、該少なくとも2つの処理ユニットによっ
    てアクセス可能であり、該装置は、 該少なくとも2つの処理ユニットのうちの1つによって
    初期ガーベジコレクション条件を検出するように構成さ
    れる第1の検出機構と、 該第1の検出機構に応答し、該少なくとも2つの処理ユ
    ニットによって該共有ヒープメモリの変更を休止するよ
    うに構成される変更保留機構と、 該少なくとも2つの処理ユニットが該変更保留機構に応
    答して該共有ヒープメモリの変更を休止した後、該少な
    くとも2つの処理ユニットにおいて世代ガーベジコレク
    ションプロセスを開始するように構成される開始機構
    と、 該開始機構によって開始された、該少なくとも2つの処
    理ユニットにおける該世代ガーベジコレクションプロセ
    スの終了を検出するように構成される第2の検出機構
    と、 該第2の検出機構に応答し、該少なくとも2つの処理ユ
    ニットによって該共有ヒープメモリの変更を再開するよ
    うに構成される再開機構とを含む、装置。
  7. 【請求項7】 前記変更保留機構が、 前記少なくとも2つの処理ユニットに前記共有ヒープメ
    モリの変更を休止させるように構成される第1の信号送
    信機構と、 該少なくとも2つの処理ユニットが該共有ヒープメモリ
    の変更を休止するのを待つように構成される第1の遅延
    機構とを含む、請求項6に記載の装置。
  8. 【請求項8】 前記第2の検出機構が、 前記少なくとも2つの処理ユニットに、前記世代ガーベ
    ジコレクションプロセスが終了したことを示す信号を送
    らせるように構成される第2の信号送信機構と、 該世代ガーベジコレクションプロセスが該少なくとも2
    つの処理ユニットにおいて終了するのを待つように構成
    される第2の遅延機構とを含む、請求項6に記載の装
    置。
  9. 【請求項9】 前記共有ヒープメモリはカードマーク共
    有ヒープであり、前記装置は、 該カードマーク共有ヒープを複数の区画に分割するよう
    に構成される分割機構と、 前記少なくとも2つの処理ユニットのうちの1つを該複
    数の区画のうちの1つに割り当てるように構成される割
    り当て機構とをさらに含む、請求項6に記載の装置。
  10. 【請求項10】 前記開始機構が、 前記複数の区画のうちの前記1つの中で、前記少なくと
    も2つの処理ユニットのうちの1つによってマークが付
    けられたカードを探すように構成される探索機構と、 該マークが付けられたカード内のポインタを処理するよ
    うに構成されるポインタ処理機構とをさらに含む、請求
    項9に記載の装置。
  11. 【請求項11】 共有ヒープメモリに結合される少なく
    とも2つの処理ユニットを含むコンピュータを有するコ
    ンピュータ制御システムであって、該共有ヒープメモリ
    は、該少なくとも2つの処理ユニットによってアクセス
    可能であり、該システムは、 該少なくとも2つの処理ユニットのうちの1つによって
    初期ガーベジコレクション条件を検出するように構成さ
    れる第1の検出機構と、 該第1の検出機構に応答し、該少なくとも2つの処理ユ
    ニットによって該共有ヒープメモリの変更を休止するよ
    うに構成される変更保留機構と、 該少なくとも2つの処理ユニットが該変更保留機構に応
    答して該共有ヒープメモリの変更を休止した後、該少な
    くとも2つの処理ユニットにおいて世代ガーベジコレク
    ションプロセスを開始するように構成される開始機構
    と、 該開始機構によって開始された、該少なくとも2つの処
    理ユニットにおける該世代ガーベジコレクションプロセ
    スの終了を検出するように構成される第2の検出機構
    と、 該第2の検出機構に応答し、該少なくとも2つの処理ユ
    ニットによって該共有ヒープメモリの変更を再開するよ
    うに構成される再開機構とを含む、システム。
  12. 【請求項12】 前記変更保留機構が、 前記少なくとも2つの処理ユニットに前記共有ヒープメ
    モリの変更を休止させるように構成される第1の信号送
    信機構と、 該少なくとも2つの処理ユニットが該共有ヒープメモリ
    の変更を休止するのを待つように構成される第1の遅延
    機構とを含む、請求項11に記載のシステム。
  13. 【請求項13】 前記第2の検出機構が、 前記少なくとも2つの処理ユニットに、前記世代ガーベ
    ジコレクションプロセスが終了したことを示す信号を送
    らせるように構成される第2の信号送信機構と、 該世代ガーベジコレクションプロセスが該少なくとも2
    つの処理ユニットにおいて終了するのを待つように構成
    される第2の遅延機構とを含む、請求項11に記載のシ
    ステム。
  14. 【請求項14】 前記共有ヒープメモリはカードマーク
    共有ヒープであり、前記システムは、 該カードマーク共有ヒープを複数の区画に分割するよう
    に構成される分割機構と、 前記少なくとも2つの処理ユニットのうちの1つを該複
    数の区画のうちの1つに割り当てるように構成される割
    り当て機構とをさらに含む、請求項11に記載のシステ
    ム。
  15. 【請求項15】 前記開始機構が、 前記複数の区画のうちの前記1つの中で、前記少なくと
    も2つの処理ユニットのうちの1つによってマークが付
    けられたカードを探すように構成される探索機構と、 該マークが付けられたカード内のポインタを処理するよ
    うに構成されるポインタ処理機構とをさらに含む、請求
    項14に記載のシステム。
  16. 【請求項16】 コンピュータで読み出し可能なコード
    が組み込まれ、共有ヒープメモリに結合される少なくと
    も2つの処理ユニットを有するコンピュータに、該共有
    ヒープメモリを変更させ且つ該共有ヒープメモリのガー
    ベジコレクションを行わせるための、コンピュータで使
    用可能な記憶媒体と、 該コンピュータに、該少なくとも2つの処理ユニットの
    うちの1つによって初期ガーベジコレクション条件を検
    出するように構成される第1の検出機構を実行させるよ
    うに構成される、コンピュータで読み出し可能なプログ
    ラムコード装置と、 該コンピュータに、該第1の検出機構に応答し該少なく
    とも2つの処理ユニットによって該共有ヒープメモリの
    変更を休止するように構成される変更保留機構を実行さ
    せるように構成される、コンピュータで読み出し可能な
    プログラムコード装置と、 該コンピュータに、該少なくとも2つの処理ユニットが
    該変更保留機構に応答して該共有ヒープメモリの変更を
    休止した後該少なくとも2つの処理ユニットにおいて世
    代ガーベジコレクションプロセスを開始するように構成
    される開始機構を実行させるように構成される、コンピ
    ュータで読み出し可能なプログラムコード装置と、 該コンピュータに、該開始機構によって開始された該少
    なくとも2つの処理ユニットにおける該世代ガーベジコ
    レクションプロセスの終了を検出するように構成される
    第2の検出機構を実行させるように構成される、コンピ
    ュータで読み出し可能なプログラムコード装置と、 該コンピュータに、該第2の検出機構に応答し該少なく
    とも2つの処理ユニットによって該共有ヒープメモリの
    変更を再開するように構成される再開機構を実行させる
    ように構成される、コンピュータで読み出し可能なプロ
    グラムコード装置とを含む、コンピュータプログラム製
    品。
  17. 【請求項17】 前記変更保留機構が、 前記コンピュータに、前記少なくとも2つの処理ユニッ
    トに前記共有ヒープメモリの変更を休止させるように構
    成される第1の信号送信機構を実行させるように構成さ
    れる、コンピュータで読み出し可能なプログラムコード
    装置と、 該コンピュータに、該少なくとも2つの処理ユニットが
    該共有ヒープメモリの変更を休止するのを待つように構
    成される第1の遅延機構を実行させるように構成され
    る、コンピュータで読み出し可能なプログラムコード装
    置とを含む、請求項16に記載のコンピュータプログラ
    ム製品。
  18. 【請求項18】 前記第2の検出機構が、 前記コンピュータに、前記少なくとも2つの処理ユニッ
    トに前記世代ガーベジコレクションプロセスが終了した
    ことを示す信号を送らせるように構成される第2の信号
    送信機構を実行させるように構成される、コンピュータ
    により読み出し可能なプログラムコード装置と、 該コンピュータに、該世代ガーベジコレクションプロセ
    スが該少なくとも2つの処理ユニットにおいて終了する
    のを待つように構成される第2の遅延機構を実行させる
    ように構成される、コンピュータにより読み出し可能な
    プログラムコード装置とを含む、請求項16に記載のコ
    ンピュータプログラム製品。
  19. 【請求項19】 前記共有ヒープメモリはカードマーク
    共有ヒープであり、前記製品は、 前記コンピュータに、該カードマーク共有ヒープを複数
    の区画に分割するように構成される分割機構を実行させ
    るように構成される、コンピュータで読み出し可能なプ
    ログラムコード装置と、 該コンピュータに、前記少なくとも2つの処理ユニット
    のうちの1つを該複数の区画のうちの1つに割り当てる
    ように構成される割り当て機構を実行させるように構成
    される、コンピュータで読み出し可能なプログラムコー
    ド装置とをさらに含む、請求項16に記載のコンピュー
    タプログラム製品。
  20. 【請求項20】 前記開始機構が、 前記コンピュータに、前記複数の区画のうちの前記1つ
    の中で前記少なくとも2つの処理ユニットのうちの1つ
    によってマークが付けられたカードを探すように構成さ
    れる探索機構を実行させるように構成される、コンピュ
    ータで読み出し可能なプログラムコード装置と、 該コンピュータに、該マークが付けられたカード内のポ
    インタを処理するように構成されるポインタ処理機構を
    実行させるように構成される、コンピュータで読み出し
    可能なプログラムコード装置とをさらに含む、請求項1
    9に記載のコンピュータプログラム製品。
JP10151802A 1997-05-30 1998-06-01 コンピュータ制御方法、装置、システム、およびコンピュータプログラム製品 Withdrawn JPH1115726A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/866.351 1997-05-30
US08/866,351 US6199075B1 (en) 1997-05-30 1997-05-30 Method and apparatus for generational garbage collection of a heap memory shared by multiple processors

Publications (1)

Publication Number Publication Date
JPH1115726A true JPH1115726A (ja) 1999-01-22

Family

ID=25347420

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10151802A Withdrawn JPH1115726A (ja) 1997-05-30 1998-06-01 コンピュータ制御方法、装置、システム、およびコンピュータプログラム製品

Country Status (4)

Country Link
US (1) US6199075B1 (ja)
EP (1) EP0881576B1 (ja)
JP (1) JPH1115726A (ja)
DE (1) DE69803624T2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003515812A (ja) * 1999-11-29 2003-05-07 サン・マイクロシステムズ・インコーポレイテッド 掃除用のガーベッジコレクションの効果を高めるための方法および装置
KR100384905B1 (ko) * 1999-04-23 2003-05-22 인터내셔널 비지네스 머신즈 코포레이션 컴퓨터 메모리에서 데이터 관리 방법, 장치 및 기록매체

Families Citing this family (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6560773B1 (en) * 1997-12-12 2003-05-06 International Business Machines Corporation Method and system for memory leak detection in an object-oriented environment during real-time trace processing
US6272504B1 (en) * 1998-05-07 2001-08-07 International Business Machines Corporation Flexibly deleting objects in a resource constrained environment
US6983463B1 (en) 1998-10-02 2006-01-03 Microsoft Corporation Network independent profiling of applications for automatic partitioning and distribution in a distributed computing environment
US7039919B1 (en) 1998-10-02 2006-05-02 Microsoft Corporation Tools and techniques for instrumenting interfaces of units of a software program
US6381735B1 (en) * 1998-10-02 2002-04-30 Microsoft Corporation Dynamic classification of sections of software
US6988271B2 (en) 1998-10-02 2006-01-17 Microsoft Corporation Heavyweight and lightweight instrumentation
US6317756B1 (en) * 1998-10-07 2001-11-13 International Business Machines Corporation On-the-fly garbage collector
GB9825102D0 (en) 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US6308319B1 (en) * 1999-02-22 2001-10-23 Sun Microsystems, Inc. Thread suspension system and method using trapping instructions in delay slots
US6363403B1 (en) * 1999-06-30 2002-03-26 Lucent Technologies Inc. Garbage collection in object oriented databases using transactional cyclic reference counting
US6381738B1 (en) * 1999-07-16 2002-04-30 International Business Machines Corporation Method for optimizing creation and destruction of objects in computer programs
US6324550B1 (en) 1999-08-25 2001-11-27 Bullant Technology Pty Ltd Data object identification and removal system
US6502109B1 (en) * 1999-11-05 2002-12-31 Lucent Technologies Inc. Distributed communications system having garbage collecting virtual processes
US6611858B1 (en) * 1999-11-05 2003-08-26 Lucent Technologies Inc. Garbage collection method for time-constrained distributed applications
US6505344B1 (en) * 2000-01-12 2003-01-07 International Business Machines Corporation Object oriented apparatus and method for allocating objects on an invocation stack
US6658652B1 (en) * 2000-06-08 2003-12-02 International Business Machines Corporation Method and system for shadow heap memory leak detection and other heap analysis in an object-oriented environment during real-time trace processing
US6865585B1 (en) * 2000-07-31 2005-03-08 Microsoft Corporation Method and system for multiprocessor garbage collection
CA2421591C (en) 2000-09-13 2011-08-23 Geodesic Systems, Incorporated Conservative garbage collectors that can be used with general memory allocators
US6968557B1 (en) * 2000-12-18 2005-11-22 Stratum8 Corporation Reducing stack memory resources in a threaded computer system
US6804681B2 (en) * 2001-05-08 2004-10-12 Sun Microsystems, Inc. Identifying and tracking object references in a java programming environment
US7065747B2 (en) * 2001-05-08 2006-06-20 Sun Microsystems, Inc. Identifying references to objects during bytecode verification
US6499094B1 (en) * 2001-09-14 2002-12-24 Unisys Corporation Management of memory heap space for data files accessible to programs operating in different addressing modes
US20030172094A1 (en) * 2002-03-06 2003-09-11 International Business Machines Corporation Automatic file system maintenance
US6950838B2 (en) * 2002-04-17 2005-09-27 Sun Microsystems, Inc. Locating references and roots for in-cache garbage collection
US6898602B2 (en) * 2002-04-22 2005-05-24 Sun Microsystems Inc. Measuring the exact memory requirement of an application through intensive use of garbage collector
JP4079684B2 (ja) * 2002-05-08 2008-04-23 株式会社日立製作所 ヒープメモリ管理方法およびそれを用いた計算機システム
GB0212119D0 (en) * 2002-05-25 2002-07-03 Ibm A method and system for the garbage collection of shared data
US6928460B2 (en) * 2002-07-01 2005-08-09 Sun Microsystems, Inc. Method and apparatus for performing generational garbage collection in a segmented heap
US6991289B2 (en) * 2002-07-31 2006-01-31 Harman International Industries, Incorporated Seatback audio system
US20040107227A1 (en) * 2002-12-03 2004-06-03 International Business Machines Corporation Method for efficient implementation of dynamic lock-free data structures with safe memory reclamation
JP4116877B2 (ja) * 2002-12-26 2008-07-09 富士通株式会社 ヒープサイズ自動最適化処理方法,ヒープサイズ自動最適化装置およびそのプログラム
US7472246B2 (en) * 2003-04-30 2008-12-30 International Business Machines Corporation Method and system for automated memory reallocating and optimization between logical partitions
US7299469B2 (en) * 2003-04-30 2007-11-20 International Business Machines Corporation Hierarchical weighting of donor and recipient pools for optimal reallocation in logically partitioned computer systems
US7478393B2 (en) * 2003-04-30 2009-01-13 International Business Machines Corporation Method for marketing to instant messaging service users
US7325062B2 (en) * 2003-04-30 2008-01-29 International Business Machines Corporation Method and system for automated adapter reallocation and optimization between logical partitions
US7313796B2 (en) * 2003-06-05 2007-12-25 International Business Machines Corporation Reciprocity and stabilization in dynamic resource reallocation among logically partitioned systems
US7237139B2 (en) * 2003-08-07 2007-06-26 International Business Machines Corporation Services heuristics for computer adapter placement in logical partitioning operations
US7376684B2 (en) * 2004-06-04 2008-05-20 International Business Machines Corporation Efficient parallel bitwise sweep during garbage collection
US7149866B2 (en) * 2004-06-04 2006-12-12 International Business Machines Corporation Free item distribution among multiple free lists during garbage collection for more efficient object allocation
EP1622009A1 (en) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM architecture and systems
US7272695B1 (en) * 2004-09-13 2007-09-18 Sun Microsystems, Inc. Hot-card caching to avoid excessive remembered-set updating
US8452938B1 (en) * 2004-12-30 2013-05-28 Azul Systems, Inc. Garbage collection with memory quick release
US7424589B1 (en) * 2005-06-24 2008-09-09 Sun Microsystems, Inc. Method and an apparatus for the high-precision tracking of approximate per-task memory usage
US7389395B1 (en) 2005-06-26 2008-06-17 Sun Microsystems, Inc. Split-reference, two-pass mark-compaction
US20070118579A1 (en) * 2005-11-21 2007-05-24 Hudson Richard L Dynamic consistency between multiple versions of objects managed by a garbage collector using transactional memory support
WO2008005298A2 (en) * 2006-06-30 2008-01-10 Wms Gaming Inc. Systems and methods for managing memory in wagering game machines
US8202168B2 (en) * 2006-06-30 2012-06-19 Wms Gaming Inc. Systems and methods for managing memory in wagering game machines
US8868623B2 (en) * 2007-10-30 2014-10-21 International Business Machines Corporation Enhanced garbage collection in a multi-node environment
US9208081B1 (en) * 2007-11-30 2015-12-08 Oracle America, Inc. Concurrent object management
US8239865B2 (en) * 2008-06-02 2012-08-07 Microsoft Corporation Waiting and synchronization of parallel task executions based on task groups and task object representations
US20100017583A1 (en) * 2008-07-15 2010-01-21 International Business Machines Corporation Call Stack Sampling for a Multi-Processor System
US8286134B2 (en) * 2008-07-15 2012-10-09 International Business Machines Corporation Call stack sampling for a multi-processor system
US9418005B2 (en) * 2008-07-15 2016-08-16 International Business Machines Corporation Managing garbage collection in a data processing system
JP4555879B2 (ja) * 2008-08-11 2010-10-06 株式会社日立製作所 メモリ管理方法、メモリ管理プログラム、および、メモリ管理装置
US8301672B2 (en) * 2008-09-22 2012-10-30 Advanced Micro Devices, Inc. GPU assisted garbage collection
US8473900B2 (en) * 2009-07-01 2013-06-25 Advanced Micro Devices, Inc. Combining classes referenced by immutable classes into a single synthetic class
US8200718B2 (en) * 2009-07-02 2012-06-12 Roberts Michael L Parallelized, incremental garbage collector
US8327109B2 (en) * 2010-03-02 2012-12-04 Advanced Micro Devices, Inc. GPU support for garbage collection
US9176783B2 (en) 2010-05-24 2015-11-03 International Business Machines Corporation Idle transitions sampling with execution context
US8843684B2 (en) 2010-06-11 2014-09-23 International Business Machines Corporation Performing call stack sampling by setting affinity of target thread to a current process to prevent target thread migration
US8799872B2 (en) 2010-06-27 2014-08-05 International Business Machines Corporation Sampling with sample pacing
US8799904B2 (en) 2011-01-21 2014-08-05 International Business Machines Corporation Scalable system call stack sampling
US10528254B2 (en) * 2011-04-26 2020-01-07 Brian J. Bulkowski Methods and systems of garbage collection and defragmentation in a distributed database
WO2013018593A1 (ja) * 2011-07-29 2013-02-07 日本電気株式会社 情報処理装置、情報処理システム、情報処理方法および制御プログラム記録媒体
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
US20150254011A1 (en) * 2014-03-10 2015-09-10 Kabushiki Kaisha Toshiba Memory system, memory controller and control method of non-volatile memory
US9747204B2 (en) 2015-12-17 2017-08-29 International Business Machines Corporation Multi-section garbage collection system including shared performance monitor register

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1548401A (en) * 1975-10-08 1979-07-11 Plessey Co Ltd Data processing memory space allocation and deallocation arrangements
US4757438A (en) 1984-07-12 1988-07-12 Texas Instruments Incorporated Computer system enabling automatic memory management operations
US4775932A (en) * 1984-07-31 1988-10-04 Texas Instruments Incorporated Computer memory system with parallel garbage collection independent from an associated user processor
US4920483A (en) 1985-11-15 1990-04-24 Data General Corporation A computer memory for accessing any word-sized group of contiguous bits
US5222221A (en) 1986-06-17 1993-06-22 Yeda Research And Development Co., Ltd. Method and apparatus for implementing a concurrent logic program
US4797810A (en) * 1986-06-26 1989-01-10 Texas Instruments Incorporated Incremental, multi-area, generational, copying garbage collector for use in a virtual address space
US4907151A (en) 1988-09-30 1990-03-06 Digital Equipment Corporation System and method for garbage collection with ambiguous roots
US5088036A (en) * 1989-01-17 1992-02-11 Digital Equipment Corporation Real time, concurrent garbage collection system and method
WO1991014986A1 (en) 1990-03-23 1991-10-03 Eastman Kodak Company Virtual memory management and allocation arrangement for digital data processing system
US5293614A (en) * 1991-04-08 1994-03-08 Texas Instruments Incorporated System and method for hard real-time garbage collection requiring a write barrier but no read barrier
US5193180A (en) 1991-06-21 1993-03-09 Pure Software Inc. System for modifying relocatable object code files to monitor accesses to dynamically allocated memory
US5355483A (en) 1991-07-18 1994-10-11 Next Computers Asynchronous garbage collection
CA2098459A1 (en) * 1992-06-15 1993-12-16 James L. Adcock Computer method and system for conservative-stack and generational heap garbage collection
CA2119788C (en) 1992-07-24 1996-12-31 Peter L. Morse Computer method and system for allocating and freeing memory
DE4234112C1 (de) * 1992-10-09 1993-10-14 Keller Grundbau Gmbh Verfahren zur Gewinnung von Deponieraum durch Müllstopfverdichtung
US5416915A (en) * 1992-12-11 1995-05-16 International Business Machines Corporation Method and system for minimizing seek affinity and enhancing write sensitivity in a DASD array
US5560003A (en) 1992-12-21 1996-09-24 Iowa State University Research Foundation, Inc. System and hardware module for incremental real time garbage collection and memory management
US5408650A (en) 1993-06-29 1995-04-18 Digital Equipment Corporation Memory analysis system for dynamically displaying memory allocation and de-allocation events associated with an application program
US5566321A (en) 1993-12-13 1996-10-15 Cray Research, Inc. Method of managing distributed memory within a massively parallel processing system
US5819299A (en) * 1996-06-06 1998-10-06 Electric Communities Process for distributed garbage collection
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
US5842016A (en) * 1997-05-29 1998-11-24 Microsoft Corporation Thread synchronization in a garbage-collected system using execution barriers
US5873104A (en) * 1997-06-26 1999-02-16 Sun Microsystems, Inc. Bounded-pause time garbage collection system and method including write barrier associated with source and target instances of a partially relocated object
US5857210A (en) * 1997-06-26 1999-01-05 Sun Microsystems, Inc. Bounded-pause time garbage collection system and method including read and write barriers associated with an instance of a partially relocated object

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100384905B1 (ko) * 1999-04-23 2003-05-22 인터내셔널 비지네스 머신즈 코포레이션 컴퓨터 메모리에서 데이터 관리 방법, 장치 및 기록매체
JP2003515812A (ja) * 1999-11-29 2003-05-07 サン・マイクロシステムズ・インコーポレイテッド 掃除用のガーベッジコレクションの効果を高めるための方法および装置
JP4756231B2 (ja) * 1999-11-29 2011-08-24 オラクル・アメリカ・インコーポレイテッド 掃除用のガーベッジコレクションの効果を高めるための方法、コンピュータ読み取り可能媒体、コンピュータシステム、及び、メモリ

Also Published As

Publication number Publication date
DE69803624T2 (de) 2002-09-12
DE69803624D1 (de) 2002-03-14
US6199075B1 (en) 2001-03-06
EP0881576A1 (en) 1998-12-02
EP0881576B1 (en) 2002-01-30

Similar Documents

Publication Publication Date Title
JPH1115726A (ja) コンピュータ制御方法、装置、システム、およびコンピュータプログラム製品
EP0969377B1 (en) Method of replication-based garbage collection in a multiprocessor system
US6874074B1 (en) System and method for memory reclamation
US5809554A (en) User control of multiple memory heaps
Brown Reclaiming memory for lock-free data structures: There has to be a better way
AU731871B2 (en) Method and apparatus for thread synchronization in object-based systems
US6854108B1 (en) Method and apparatus for deterministic replay of java multithreaded programs on multiprocessors
US7945911B1 (en) Barrier synchronization method and apparatus for work-stealing threads
US5930807A (en) Apparatus and method for fast filtering read and write barrier operations in garbage collection system
US6671707B1 (en) Method for practical concurrent copying garbage collection offering minimal thread block times
US8127280B2 (en) Method and system for dynamic memory management
US5903900A (en) Method and apparatus for optimizing exact garbage collection of array nodes in a carded heap
KR101354796B1 (ko) 소프트웨어 트랜잭션 메모리 블록들을 포함하는 프로그램의컴파일을 위한 방법
KR100512665B1 (ko) 가비지 수집기들을 추적하는 공간 한정된 마킹 구조
US5920876A (en) Performing exact garbage collection using bitmaps that identify pointer values within objects
US4775932A (en) Computer memory system with parallel garbage collection independent from an associated user processor
US5313647A (en) Digital data processor with improved checkpointing and forking
US6115782A (en) Method and apparatus for locating nodes in a carded heap using a card marking structure and a node advance value
US6038572A (en) Method and apparatus for localizing nodes in a garbage collected carded heap
JP4917138B2 (ja) オブジェクト最適配置装置、オブジェクト最適配置方法、及びオブジェクト最適配置プログラム
US5915255A (en) Method and apparatus for referencing nodes using links
US5911144A (en) Method and apparatus for optimizing the assignment of hash values to nodes residing in a garbage collected heap
Hudson et al. Sapphire: Copying GC without stopping the world
JP2007299403A (ja) 異機種マルチプロセッサ・システムにおけるガーベッジ・コレクションのためのシステムおよび方法
US6965905B2 (en) Lock-free, parallel remembered sets

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20050802