JP4756231B2 - 掃除用のガーベッジコレクションの効果を高めるための方法、コンピュータ読み取り可能媒体、コンピュータシステム、及び、メモリ - Google Patents

掃除用のガーベッジコレクションの効果を高めるための方法、コンピュータ読み取り可能媒体、コンピュータシステム、及び、メモリ Download PDF

Info

Publication number
JP4756231B2
JP4756231B2 JP2001540582A JP2001540582A JP4756231B2 JP 4756231 B2 JP4756231 B2 JP 4756231B2 JP 2001540582 A JP2001540582 A JP 2001540582A JP 2001540582 A JP2001540582 A JP 2001540582A JP 4756231 B2 JP4756231 B2 JP 4756231B2
Authority
JP
Japan
Prior art keywords
area
computer
new
garbage collection
objects
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2001540582A
Other languages
English (en)
Other versions
JP2003515812A (ja
JP2003515812A5 (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 JP2003515812A publication Critical patent/JP2003515812A/ja
Publication of JP2003515812A5 publication Critical patent/JP2003515812A5/ja
Application granted granted Critical
Publication of JP4756231B2 publication Critical patent/JP4756231B2/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
    • 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/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99956File allocation
    • Y10S707/99957Garbage collection

Landscapes

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

Description

【0001】
【発明の属する技術分野】
本発明は、一般に、ソフトウェアアプリケーションのパフォーマンスを向上させるための方法および装置に関する。本発明は、特に、メモリの割り当てに関連して生じるオーバーヘッドを減少させるための方法および装置に関する。
【0002】
【従来の技術】
オブジェクトをベースとしたようなコンピュータシステムでは、一般に、使用可能なメモリの量に限りがある。このため、通例として、メモリを保存して再利用しなければならない。ソフトウェアディベロッパは、多くのコンピュータプログラミング言語によって、コンピュータシステムにおいて動的にメモリを割り当てることができる。プログラミング言語の種類によっては、事前に割り当てられたメモリを手動で明示的に再割り当てする必要があるが、これは複雑であり、ミスを生じやすい。手動による系統的なメモリ管理を必要とするプログラミング言語として、CおよびC++が挙げられる。他のプログラミング言語の場合は、不要になったメモリを自動ストレージレクラメーションを使用して再利用することによって、レクラメーションシステムで再利用されたメモリの割り当てを行うコンピュータプログラムを正常に動作させる。このような自動ストレージレクラメーションシステムは、メモリを再利用する際に、そのメモリを事前に利用していたコンピュータプログラムからの明示的な命令または呼び出しを使用しない。
【0003】
当業者ならば理解できるように、オブジェクト指向すなわちオブジェクトベースのシステムにおいては、一般に、メモリ割り当ての通常の単位をオブジェクトまたはメモリオブジェクトと呼ぶ。使用されるオブジェクトは、一般に「ライブ」オブジェクトと呼ばれており、コンピュータプログラムを正しく実行させるのに不要になったオブジェクトは、通常は「ガーベッジ」オブジェクトまたは「デッド」オブジェクトと呼ばれる。ガーベッジオブジェクトを再利用する動作は、一般にガーベッジコレクションと呼ばれており、自動のストレージ再利用システムは、多くの場合にガーベッジコレクタと呼ばれる。自動のストレージ再利用システムを使用したコンピュータプログラムは、実行中にライブメモリオブジェクトを変更することができるという事実から、ミューテータとして知られている。Java(登録商標)プログラミング言語(カリフォルニア州パロアルト所在のサンマイクロシステムズによって開発された言語)やスモールトークプログラミング言語などの言語で記述されたコンピュータプログラムは、ガーベッジコレクションを使用して自動的にメモリを管理する。
【0004】
一般に、ガーベッジコレクションに関連した計算上の負担を軽減するために、管理メモリ領域を小区域に分割し、一度に1領域ずつ局所的にガーベッジコレクションを実施できるようにする。メモリ区分化スキームの1つとして、世代ガーベッジコレクションが挙げられる。世代ガーベッジコレクションでは、作成された時点から測定したライフタイムに基づいてオブジェクトを区分する。世代ガーベッジコレクションに関しては、Richard JonesおよびRafael Linsによる「Garbage Collection: Algorithms for Automatic Dynamic Memory Management(ガーベッジコレクション:動的な自動メモリ管理)」(John Wiley & Sons Ltd., 1996)に記載されており、本書全体を引用して本明細書に組み込むものとする。「若い」オブジェクトは、「旧い」オブジェクトよりも、ガーベッジになりやすい傾向があることが知られている。したがって、メモリ再利用の効率を全体的に高める目的で、世代ガーベッジコレクションが使用される。
【0005】
図1は、オブジェクトを含み且つ世代ガーベッジコレクションに適したコンピュータメモリの1領域を示した概略図である。メモリ102の管理領域は、通例はコンピュータシステムに関連付けられたヒープ(動的データ域)であって、新世代104と旧世代106とに分割される。新世代104は、例えばオブジェクト110a〜110eのような最新に作成されたオブジェクト110を含み、旧世代106は、例えばオブジェクト110fおよび110gのようなそれほど最新に作成されたのではないオブジェクト110を含む。メモリ102の中で新しく作成されるオブジェクト110は、新世代104の中に作成される。新世代104が満杯になり、新しいオブジェクト110をこれ以上割り当てられない場合は、新世代104を掃除するガーベッジコレクションを実施して、メモリスペースを解放する。
【0006】
オブジェクト110は、一般に、他のオブジェクト110によって参照することが可能である。例えば、オブジェクト110bは、オブジェクト110aに向かうポインタ114aを有する。当業者ならば理解できるように、オブジェクト110bは、ルートがオブジェクト110bへの移行を示している場合にライブであると考えられる。すなわち、オブジェクト110bは、ポインタリストによって指し示されており、これによってルートにより識別される場合にライブであるとみなされる。
【0007】
新世代のオブジェクト110dがライブであり、旧世代のオブジェクト110fを指している場合は、オブジェクト110fがライブオブジェクトによって参照されているので、オブジェクト110fは、旧世代106で実施されるガーベッジコレクションによって「回収」されない。しかしながら、新世代のオブジェクト110dがデッド状態にあり、旧世代のオブジェクト110fが他のオブジェクトによって指されていない場合は、新世代104で実施されるガーベッジコレクションが旧世代のオブジェクト110fに到達することはできない。このように、旧世代のオブジェクト110fが到達不能である場合は、旧世代のオブジェクト110fは、旧世代106で実施されるガーベッジコレクションによって回収される。ポインタ114bが、新世代のオブジェクト110dから旧世代のオブジェクト110fを指している場合は、新世代のガーベッジコレクションすなわち新世代104で実施されるガーベッジコレクションによって旧世代のオブジェクト110fを収集することができないので、この旧世代のオブジェクト110fは、終身的ガーベッジだとみなされる。
【0008】
図2を参照にして以下で述べるように、満杯になった新世代104で掃除用のガーベッジコレクションを実施する際には、新世代104の中のライブオブジェクト110が新世代104から旧世代106へとコピーされる。新世代104に新しく割り当てられたオブジェクト110はライブである場合が多いので、これらは、掃除用のガーベッジコレクションの最中に新世代104から旧世代106へとコピーしなければならない。コピーの動作は、一般に低速で且つ高価である。このため、ガーベッジコレクションはその工程全体が高価である。
【0009】
世代ガーベッジコレクタの種類によっては、新世代からのライブオブジェクトを、終身的に旧世代にする前に中間領域にコピーする場合がある。図1bは、新世代と、中間領域と、旧世代とに分割されたメモリスペースを示した概略図である。メモリスペース202は、新世代204と、「fromスペース」および「toスペース」205と、旧世代206とを含む。新しく割り当てられるオブジェクト210は、新世代204に割り当てられる。新世代204が満杯になると、ライブオブジェクト210は、新世代204からfromスペースおよびtoスペース205へとコピーされる。オブジェクト210は、例えば所定の期間、あるいは、fromスペースおよびtoスペース205が満杯になるまでなど、いくらかの期間だけfromスペースおよびtoスペース205の中に留まることにより、fromスペースおよびtoスペースの中でデッド状態になるまで待機することが可能になる。fromスペースおよびtoスペース205が満杯になったら、fromスペースおよびtoスペース205で、例えば定期的にガーベッジコレクションが実施される。fromスペースおよびtoスペース205でガーベッジコレクションを実施する際には、fromスペースおよびtoスペース205の中のライブオブジェクトが、旧世代206へとコピーされる、すなわち、終身的に旧世代206になる。
【0010】
例えば図1の管理領域102のように、新世代と旧世代とに分割されたメモリの管理領域において、掃除用のガーベッジコレクションを実施する従来の方法の1つを、図2を参照にしながら説明する。具体的には、新世代で掃除用のガーベッジコレクションを実施するプロセスを説明する。ガーベッジコレクションを実施するプロセス252は、新世代の中のライブオブジェクトのリストを取得するステップ256から開始する。ライブオブジェクトのリストは、様々な方法を使用して取得して良い。ライブオブジェクトのリストの取得に使用して良い方法の1つとしては、例えば、新世代および旧世代のいずれか若しくは両方の中のオブジェクトを参照するグローバルオブジェクトすなわちルートを調査し、現行で使用されているオブジェクトを識別することを含む。
【0011】
ライブオブジェクトのリストが取得されたら、リストの中から識別されたライブオブジェクトを、ステップ258において新世代から取得する。一般に、掃除用のガーベッジコレクションの際には、新世代のメモリスペースを解放する目的で、新世代の中のライブオブジェクトが旧世代へとコピーされる。このため、ステップ260では、ライブオブジェクトが旧世代へとコピーされる。当業者ならば理解できるように、ライブオブジェクトを旧世代にコピーするステップは、ライブオブジェクトを識別するあらゆるポインタを変更してそのオブジェクトのコピーを代わりに識別させることに加えて、ライブオブジェクトによって参照されるオブジェクトをコピーすることを含む。さらに、ライブオブジェクトを新世代から旧世代へとコピーするステップは、新世代のメモリスペースのうちライブオブジェクトに関連付けられたスペースを有効に解放し、他の用途に使用できるようにする。
【0012】
ステップ260で、ライブオブジェクトが旧世代へとコピーされると、ステップ262で、新世代の中にまだライブオブジェクトが残っているか否かの決定がなされる。つまり、ライブオブジェクトのリストの中からまだ他のライブオブジェクトを識別できるか否かが決定される。ライブオブジェクトのリストの中にまだライブオブジェクトがあると決定された場合は、プロセスはステップ258に戻り、リストの中から識別される次のライブオブジェクトを取得する。あるいは、新世代の中にもうライブオブジェクトが残っていない場合は、その旨が示され、新世代で掃除用のガーベッジコレクションを実施するプロセスが完了する。
【0013】
掃除用のガーベッジコレクションは、高価なプロセスである場合が多い。具体的には、上述したように、掃除用のガーベッジコレクションの最中にライブオブジェクトをコピーする動作が低速で且つ高価である。このため、掃除用のガーベッジコレクションの最中に多数のライブオブジェクトをコピーする場合や、掃除用のガーベッジコレクションの最中にいくつかの大きいオブジェクトをコピーする場合などは、ガーベッジコレクションのプロセス自体が低速且つコスト高になる。
【0014】
したがって、掃除用の世代ガーベッジコレクションに関連したコストを削減する方法が望まれる。つまり、掃除用の世代ガーベッジコレクションの最中に旧世代にコピーされるライブオブジェクトの数を減らす方法および装置が必要とされる。
【0015】
【発明の概要】
本発明は、効果的な掃除用の世代ガーベッジコレクションの実施を可能とするメモリスペースに関する。本発明の1態様にしたがうと、メモリスペースを再利用する方法は、第1の領域と第2の領域とを含んだ管理メモリ領域を使用する。第1の領域は、使用可能なメモリスペースを有する場合は最新に割り当てられたオブジェクトを格納するように構成され、第2の領域は、それよりも旧いオブジェクトを格納するように構成される。この方法は、新しいオブジェクトを割り当てられる第1の領域の第1の区域が実質的に満杯になった時点を決定することを含む。第1の区域が実質的に満杯になったことが決定されたら、第1の領域の第2の区域でガーベッジコレクションが実施される。ガーベッジコレクションの実施後は、新しいオブジェクトが第2の区域に割り当てられるように、新しいオブジェクトの割り当てをサポートするように第2の区域を設定し、新しいオブジェクトの割り当てをサポートする構成をもはや有しないように第1の区域を再設定する。1実施形態において、第2の区域でガーベッジコレクションを実施する工程は、ライブオブジェクトを第2の区域から第2の領域へとコピーすることを含む。
【0016】
上記方法の別の1実施形態は、さらに、第2の区域が新しいオブジェクトの割り当てをサポートするように設定された後に、第2の区域に新しいオブジェクトを割り当てようと試みる工程と、第2の区域が実質的に満杯になった時点を決定する工程とを含む。第2の区域が実質的に満杯でないと決定された場合は、第2の区域に新しいオブジェクトが割り当てられる。あるいは、第2の区域が実質的に満杯になったと決定された場合は、第1の区域でガーベッジコレクションが実施される。このような1実施形態において、第2の区域が実質的に満杯になったと決定された場合は、上記方法は、さらに、新しいオブジェクトの割り当てをサポートする構成をもはや有しないように第2の区域を再設定する工程と、再び新しいオブジェクトの割り当てをサポートする構成を有するように第1の区域を再設定する工程と、新しいオブジェクトを第1の区域に割り当てる工程とを含む。
【0017】
本発明の別の1態様にしたがうと、第1の領域と第2の領域とを含んだ管理メモリ領域において、メモリスペースを再利用するためのコンピュータシステムは、プロセッサと、新しいオブジェクトの割り当てをサポートする第1の領域の第1の区域が実質的に満杯になった時点を決定するための決定部とを含む。このシステムは、さらに、第1の区域が実質的に満杯になったと決定された場合に第1の領域の第2の区域を掃除するガーベッジコレクタと、さらに、新しいオブジェクトの割り当てをサポートする構成を有するように第2の区域を設定し、新しいオブジェクトの割り当てをサポートする構成をもはや有しないように第1の区域を設定するように構成されたトラッキングメカニズムとを含む。1実施形態において、第1の区域と第2の区域とは境界によって分離されており、上記システムは、さらに、この境界を移動させ、第1の区域および第2の区域の相対的なサイズを変更するための調整部を含む。
【0018】
本発明のさらに別の1態様にしたがうと、コンピュータシステムの中にオブジェクトを格納するメモリ構造は、第1の領域と第2の領域とを含む。第1の領域は、最新に割り当てられたオブジェクトを格納する第1の区域と、最新に割り当てられたオブジェクトよりも前に割り当てられた第1のオブジェクトを格納する第2の区域と、に有効に区分化される。第2の区域は、第1の区域が満杯である場合に第2の区域がガーベッジコレクションを受けるように構成される。上記メモリ構造の第2の領域は、第1のオブジェクトの割り当てよりも前に割り当てられた第2のオブジェクトを格納する。1実施形態において、第2の領域は、さらに、第2の区域でガーベッジコレクションが実施される場合に第1のオブジェクトのコピーを格納するように構成される。このような1実施形態において、ガーベッジコレクションを経た第2の区域は、最新に割り当てられたオブジェクトの割り当てからいくらか経過した後に割り当てられる第3のオブジェクトを格納するために使用される。
【0019】
以下の詳細な説明および各種の図面から、本発明の様々な利点を明らかにする。
【0020】
【発明の実施の形態】
掃除用の世代ガーベッジコレクションは、一般に、新世代が新しいオブジェクトを割り当てられないほど満杯になった場合に、旧世代も含んだ管理メモリ領域の新世代を掃除すること含む。引例として本明細書に組み込まれたRichard JonesおよびRafael Linsによる「Garbage Collection: Algorithms for Automatic Dynamic Memory Management(ガーベッジコレクション:動的な自動メモリ管理)」(John Wiley & Sons Ltd., 1996)に記載されているように、掃除の際には、ライブオブジェクトが新世代から旧世代へとコピーされる。ライブオブジェクトのコピーは高価で且つ低速なので、掃除用のガーベッジコレクションは通例は非効率的である。掃除用のガーベッジコレクションが低速で高価なのは、その最中に実施されるライブオブジェクトのコピーが原因なので、ガーベッジコレクションの最中に新世代から旧世代へとコピーされるライブオブジェクトの数を減らすことによって、ガーベッジコレクションの有効性および効率を高めることができる。
【0021】
新世代のなかでも、若い側すなわち新しい側にあるオブジェクトは、旧い側にあるオブジェクトよりもライブである傾向が強いことがわかっている。つまり、新世代に最新に割り当てられたオブジェクトは、新世代にそれほど最新に割り当てられたのではないオブジェクトよりも、ライブである傾向が強いことがわかっている。このため、新世代の中のオブジェクトの在住時間が長くなるほど、すなわちそのオブジェクトが新世代の中でも古い方のオブジェクトになるにつれて、そのオブジェクトがデッド状態になる可能性が高くなる。
【0022】
本発明の1実施形態において、新世代と旧世代とに分割されたメモリスペースの管理領域の新世代は区分化されている。新世代は、具体的には2つの区域に区分化される。新世代に最新に割り当てられたオブジェクトは「若い」区域に維持され、新世代にそれほど最新に割り当てられたのでないオブジェクトは「旧い」区域に維持される。新世代がこれ以上オブジェクトを割り当てられない程度まで満杯になった場合は、新世代の旧い区域だけを掃除する。旧い区域の中のオブジェクトは、若い区域の中のオブジェクトよりも古く、通常はデッド状態にある。したがって、掃除用のガーベッジコレクションに関連して生じるコピーの量は、比較的少ない。さらに、若い区域は掃除されないので、若い区域の中のオブジェクトを、デッド状態になるまでのあいだ長く留めることが可能である。旧い区域の掃除が完了した後は、この旧い区域が有効に現行の若い区域になり、若い区域は若い現行領域が満杯になった場合に掃除される現行の旧い区域になる。
【0023】
新世代の1区域のみを掃除するので、新世代の1区域のみがオブジェクトの割り当てに使用可能である。したがって、掃除用のガーベッジコレクションを実施する全体の回数が、従来の分割なしの新世代に関連して実施する回数よりも多くなる。しかしながら、区分化された新世代でガーベッジコレクションを実施する場合は、その最中に旧世代にコピーするべきオブジェクトの数が少ないので、ガーベッジコレクションによって消費される時間および計算リソースの量が少なくてすむ。つまり、ガーベッジコレクションを実施する回数は多いものの、それぞれが比較的高速で且つ安価に行われる。
【0024】
区分化された新世代を有したメモリスペースの管理領域を、図3を参照にしながら、本発明の1実施形態にしたがって以下で説明する。メモリスペース302は、コンピュータシステムに関連付けられたヒープ(動的データ域)である場合が多く、新世代306と旧世代310とに分割される。新世代306は、メモリに最新に割り当てられたオブジェクト314を含むように構成され、旧世代306は、それほど最新に割り当てられたのではないオブジェクト314を含むように構成される。
【0025】
ここで説明する1実施形態において、「ナーサリ」または「エデン」とも称される新世代306は、2つの区域318に区分化される。区域318aは、新世代306のうち若い区域であり、区域318bは、新世代306のうち旧い区域である。区域318aは、新世代306の中でも若いオブジェクト314を含み、区域318bは、新世代306の中でも旧いオブジェクト314を含む。したがって、新世代306にオブジェクト314を割り当てる場合は、区域318aにオブジェクト314を割り当てる。
【0026】
説明を容易にするため、区域318aおよび区域318bは、事実上は2つの別々のナーサリだと考えて良い。つまり、各区域318を別々の新世代として扱って良い。区域318を別々のナーサリだと考える場合は、オブジェクトを割り当てられる区域、例えば318aが満杯になったら、別の区域、例えば区域318bを掃除し、オブジェクトを割り当てられる新しいナーサリにする。同様に、区域318bがオブジェクトを割り当てられるナーサリである場合は、区域318bが満杯になったら、区域318aでガーベッジコレクションを実施し、区域318aをオブジェクトを割り当てられるナーサリにする。
【0027】
区域318aが新しいオブジェクトを割り当てるのに十分なメモリスペースを有しない場合は、区域318aにオブジェクトを割り当てる試みは失敗する。したがって、ガーベッジコレクションを実施するのは、メモリスペースを再利用して新しいオブジェクトを割り当てられるようにするためである。区域318aが新しいオブジェクトの割り当てをサポートするだけの十分なメモリスペースを含まないときは、区域318bも事実上満杯である。1実施形態において、区域318aが満杯であるときは、区域318bで掃除用の世代ガーベッジコレクションが実施される。例えばオブジェクト314eなど、区域318bの中のオブジェクト314はガーベッジオブジェクトである可能性が高いので、ガーベッジコレクションの最中に旧世代310にコピーされるオブジェクト314の数は、一般に比較的少なくてすむ。図に示すように、オブジェクト314gはセクション318bの中のライブオブジェクトであり、ガーベッジコレクションの最中に旧世代310へとコピーされる。区域318bから旧世代310へとコピーされるライブオブジェクト314の数が少なくてすむので、ガーベッジコレクションに関連して生じるオーバーヘッドも比較的少ない。したがって、ガーベッジコレクションは一般に効率的に行われる。区域318bでガーベッジコレクションが実施されると、図4および図5を参照にしながら以下で述べるように、再利用されたメモリスペースをオブジェクトの割り当てに使用することが可能になる。
【0028】
新世代306を複数の区域318に分割する境界322は、柔軟性を有した可動性の境界である。つまり、境界322を有効に移動させ、区域318の相対的なサイズを変更して良い。例えば1実施形態では、区域318aと区域318bとが実質的に同じ量のメモリスペースを含むように、境界322を位置決めして良い。
【0029】
境界322の位置決めは、動的なプロセスとなしうることを理解すべきである。具体的には、コンピュータシステムのパフォーマンスを効果的に最適化できるように、プロセスの最中に必要に応じて境界322の位置を変更しても良い。例えば、ガーベッジコレクションの最中に、かなりの数のライブオブジェクト314が区域314bから旧世代310へとコピーされることがわかった場合は、区域318aのサイズが区域318bのサイズよりも相対的に大きくなるように境界322を位置決めし、それらのライブオブジェクト314がデッド状態になるまでのあいだ長く区域318bに留まれるようにしても良い。あるいは、ガーベッジコレクションの最中に旧世代310へとコピーされるライブオブジェクト314の数が非常に少ない場合は、区域318bの相対的なサイズが大きくなるように境界322を位置決めしなおして、掃除の頻度を減らしても良い。境界322を位置決めしなおすかどうかは、非常に様々な方法を使用して決定して良いが、適切な方法の1つとして、ガーベッジコレクションに関連して生じるオーバーヘッドの量に基づく方法が挙げられ、例えば、関連して生じる計算上のオーバーヘッドの量が所望の範囲内に収まるように、境界322の位置を調整しても良い。
【0030】
当業者ならば理解できるように、メモリスペース302の中のオブジェクトは、一般に、メモリスペース302の外にある固定ルート(未図示)によって参照されており、この固定ルートはメモリスペース302の中のオブジェクト314のどれかを指したポインタを含んでいる。固定ルートからの参照をたどって到達可能なあらゆるオブジェクト314はライブオブジェクトだとみなされる。区域318bのような個別のメモリ領域を操作するためには、ガーベッジコレクタは、区域318bへの全ての参照に関する知識を必要とする。特定の領域への参照は、その領域に対するルートと呼ばれる。ルートは、例えば固定ルートなどの外部参照と、コンピュータメモリの他の領域からの参照との両方を、当然ながら含んでいる。したがって、ガーベッジコレクタは、一般にルートすなわち参照を検出およびトラッキングするメカニズムを提供する。
【0031】
新世代306のオブジェクト314であっても、ライブであると想定され且つ別のオブジェクト314へのポインタを含む場合は、ルートであるとみなされる。例えば、オブジェクト314gはルートであるとみなされる。オブジェクト314gがライブであって、旧世代310の中のオブジェクト314iを指している場合は、オブジェクト314iは、旧世代310で実施されるガーベッジコレクションによって「回収」されない。しかしながら、オブジェクト314gがデッド状態にある場合は、区域318bでガーベッジコレクションを実施した結果として、どのオブジェクト314からもオブジェクト314iを指すことができなくなり、オブジェクト314iは到達不能になる。オブジェクト314iが到達不能である場合は、旧世代310で実施されるガーベッジコレクションによって、オブジェクト314iが回収される。
【0032】
図4は、区分化された新世代を有したメモリスペースすなわち図3のメモリスペース302で掃除用のガーベッジコレクションを実施するプロセスを、本発明の1実施形態にしたがって示したフローチャートである。新世代の一部分でガーベッジコレクションを実施するプロセス402は、メモリスペースの中からライブオブジェクトのリストを取得するステップ406から開始する。例えば、ライブオブジェクトのリストの取得に使用される方法の1つは、新世代および旧世代のいずれか若しくは両方の中のオブジェクトを参照するルートすなわちグローバルオブジェクトを追跡し、まだ使用されているオブジェクトを決定することを含む。ルートは、例えばスタックの上すなわち新世代の中に設けて良い。
【0033】
ステップ408において、新世代からライブオブジェクトを取得する。1実施形態において、ライブオブジェクトの取得は、ライブオブジェクトのリストの中から識別される第1のライブオブジェクトを取得することを含む。新世代からライブオブジェクトが取得されたら、そのライブオブジェクトが新世代の旧い区域の中にあるのか否かを、ステップ410において決定する。ライブオブジェクトが旧い区域にあるという決定が下されたら、ステップ412において、旧い区域から旧世代へとライブオブジェクトをコピーする。一般に、旧い区域から旧世代へとオブジェクトをコピーするステップは、そのオブジェクトに関連付けられたビットをコピーするとともに、そのオブジェクトへのあらゆるポインタを再設定し、それらのポインタがコピー後のオブジェクトを識別できるようにすることを含む。オブジェクトをコピーするステップは、さらに、そのオブジェクトに端を発するあらゆるポインタを、コピー後のオブジェクトに端を発するように変更することを含む。
【0034】
ステップ412において、旧い区域から旧世代へとライブオブジェクトがコピーされたら、ステップ414において、新世代の中にまだライブオブジェクトがあるか否かを決定する。つまり、ライブオブジェクトのリストの中にまだ取得するべきライブオブジェクトが残っているか否かに関して決定を下す。取得するべきライブオブジェクトがまだ残っていると決定された場合は、プロセスは、新世代から別のライブオブジェクトを取得するステップ408に戻る。
【0035】
あるいは、ステップ414において、新世代の中にもうライブオブジェクトが残っていないこと、例えば、新世代の旧い区域の中のライブオブジェクトが全て旧世代にコピーされたことが決定された場合は、アロケータ(割り当て部)のブックキーピング情報を更新し、旧い区域を現行の若い区域に有効に設定し、若い区域を現行の旧い区域に有効に設定することによって、割り当てが現行の若い区域で生じるようにする。つまり、旧い区域が新しく若い区域に定められ、若い区域が新しく旧い区域に定められる。当業者ならば理解できるように、掃除が完了した区域にはライブオブジェクトは含まれない。掃除中の区域からは、ライブオブジェクトがコピーされて排出されるからである。
【0036】
旧い区域と若い区域とを有効に交換するにあたっては、図5を参照にしながら以下で述べるように、新世代のトラッキングに関連したあらゆるポインタおよび変数を再設定し、新世代に割り当てられるあらゆる新しいオブジェクトを、空いている現行の若い区域に割り当てられるようにする。1実施形態において、現行の若い区域すなわち新しく定められた若い区域に残っている非ライブオブジェクトは、現行の若い区域のメモリスペースを解放するために、廃棄されあるいはゼロに設定される。有効に空にされた現行の若い区域および満杯になった現行の旧い区域の基本的な設定がなされると、ガーベッジコレクションのプロセスは完了する。
【0037】
ステップ410すなわち新世代から取得されたライブオブジェクトが旧い区域にあるか否かの決定に戻り、ライブオブジェクトが旧い区域にはないと決定された場合は、このライブオブジェクトが若い区域にあることを意味する。したがって、このライブオブジェクトは、旧世代にコピーされる代わりに若い区域に留まることを許される。したがって、プロセスは、新世代から取得するべきライブオブジェクトがまだあるか否かに関して決定を下すステップ414に進む。
【0038】
ガーベッジコレクションは、アプリケーションの処理中ならば実質的に任意の適切な時点において行われても良いが、オブジェクトを割り当てる試みがなされる時点または処理の休止時において行われるのが一般的である。ガーベッジコレクションが処理の休止時に生じるのは、休止時には計算リソースが使用可能となるためである。例えば、ガーベッジコレクションは安全点(safepoint)の最中に生じて良い。当業者ならば理解できるように、安全点は、システムの実質的に全てのスレッドが安全領域にあるかあるいは動作を一時停止しており、これらのスレッドがガーベッジコレクションなどのグローバル動作のパフォーマンスに対して事実上何ら問題を生じない場合に生じる。
【0039】
図5を参照にしながら、メモリスペースの解放が必要な場合に、図4のガーベッジコレクションのプロセス402を使用して実施される、オブジェクトの割り当てに関連したいくつかのステップを、本発明の1実施形態にしたがって説明する。前述したように、ガーベッジコレクションは、使用可能なメモリスペースがオブジェクトを割り当てるのに十分でない場合にメモリスペースを解放する目的で生じる場合が多い。
【0040】
メモリスペースの新世代にオブジェクトを割り当てる試みに応答するプロセス502は、新世代の若い区域、例えば若いナーサリ領域が満杯であるか否かを決定するステップ504から開始する。つまり、新世代の若い区域が、オブジェクトを割り当てられるのに十分なフリースペースを有するか否かを決定する。若い区域が満杯でないと決定された場合は、その若い区域がオブジェクトの割り当てをサポートするのに十分なスペースを有することを意味する。したがって、プロセスはステップ504からステップ510に進み、若い区域にオブジェクトを割り当てる。若い区域にオブジェクトが割り当てられたら、オブジェクトを割り当てる試みに応答するプロセスは完了する。
【0041】
あるいは、ステップ504において、若い区域がオブジェクトを割り当てられるのに十分なスペースを提供できないと決定された場合は、ステップ506において、新世代の旧い区域で掃除用のガーベッジコレクションが実施される。使用可能な掃除用ガーベッジコレクションのプロセスの1つに関しては、図4を参照にしながら前述した。
【0042】
ステップ506において、掃除用のガーベッジコレクションを実施すると、旧い区域が有効に空にされる、すなわち旧い区域のメモリスペースが解放される。図4を参照にしながら上述したように、旧い区域が空になると、旧い区域と若い区域とが有効に交換される。つまり、有効に空にされた旧い区域が現行の若い区域として扱われ、満杯になった若い区域が現行の旧い区域として扱われる。前者の旧い区域を現行の若い区域として扱う方法は任意であって良いが、一般には、各種の変数およびフラグを設定し、任意の新しいオブジェクトの割り当てをこの現行の若い区域で生じさせることを含む。
【0043】
掃除用のガーベッジコレクションが完了したら、ステップ508において、現行の若い区域にオブジェクトを割り当てる。つまり、掃除用のガーベッジコレクションの最中に空にされたメモリ領域にオブジェクトを割り当てる。ステップ508においてオブジェクトが割り当てられたら、オブジェクトを割り当てる試みに応答するプロセスは完了する。
【0044】
図6は、本発明の実装に適した代表的な汎用コンピュータシステムを示した図である。コンピュータシステム1030は、一次記憶デバイス1034(典型的にはランダムアクセスメモリすなわちRAM)と一次記憶デバイス1036(典型的には読み出し専用メモリすなわちROM)とを含むメモリデバイスに接続された任意の数のプロセッサ1032(中央処理装置すなわちCPUとも称される)を備えている。
【0045】
コンピュータシステム1030、またはさらに特定してCPU1032は、当業者ならば理解できるように、仮想マシンをサポートするように構成して良い。図7を参照にしながら、コンピュータシステム1030にサポートされる仮想マシンの一例を以下で説明する。当業者に周知のように、ROMは、CPU1032にデータおよび命令を一方向的に転送するよう機能し、RAMは通例、データおよび命令を二方向的に転送するのに用いられる。CPU1032は、一般に任意の数のプロセッサを含むことができる。両方の一次記憶デバイス1034,1036は、任意の適切なコンピュータ読み取り可能媒体を含むことができる。二次記憶媒体1038は、通例はマスメモリデバイスであり、二方向的にCPU1032に接続され、データ記憶容量を補っている。マスメモリデバイス1038は、コンピュータコード、データなどを含むプログラムを格納するのに用いることが可能なコンピュータ読み取り可能な媒体である。通例、マスメモリデバイス1038は、一般に一次記憶デバイス1034,1036よりも低速なハードディスクもしくはテープなどの記憶媒体である。マスメモリ記憶デバイス1038は、磁気もしくは紙テープ読取装置やその他のよく知られたデバイスであってもよい。しかるべき場合には、マスメモリデバイス1038に保持された情報を、仮想メモリとしてのRAM1036の一部として標準的な方法で組み込んでもよいことがわかる。CD−ROMのような一次記憶デバイス1034でも、データを一方向的にCPU1032に送ることができる。
【0046】
また、CPU1032は、ビデオモニタ、トラックボール、マウス、キーボード、マイクロフォン、タッチセンシティブディスプレイ、トランスデューサカードリーダ、磁気もしくは紙テープリーダ、タブレット、スタイラス、音声もしくは手書き文字認識装置、もしくは、もちろん他のコンピュータのようなその他のよく知られた入力デバイス、を含むがそれらに限定されない1つ以上の入出力デバイス1040に接続されている。最後に、CPU1032は、1012に大まかに示されているネットワーク接続を用いて、コンピュータや、例えばインターネットネットワークもしくはイントラネットネットワークなどのローカルエリアネットワークに随意的に接続されても良い。このようなネットワーク接続により、CPU1032は、上述した方法のステップを実行している間に、ネットワークから情報を受信したりネットワークに情報を出力したりすることができると考えられる。そのような情報は、CPU1032を用いて実行される命令のシーケンスであることが多く、例えば搬送波で運ばれるコンピュータデータ信号の形で、ネットワークから受信したりネットワークに出力したりすることができる。上述のデバイスと構成要素は、コンピュータハードウェアおよびソフトウェアの当業者には周知であろう。
【0047】
前述したように、仮想マシンはコンピュータシステム1030の上で実行して良い。図7は、図6のコンピュータシステム1030によってサポートされ且つ本発明の実装に適した仮想マシンを示した概略図である。例えばカリフォルニア州パロアルト所在のサンマイクロシステムズによって開発されたJava(登録商標)プログラミング言語などで記述されたコンピュータプログラムが実行されると、コンパイルタイム環境1105において、ソースコード1110がコンパイラ1120に供給される。コンパイラ1120は、ソースコード1110をバイトコード1130に変換する。ソースコード1110は、通例は、ソフトウェアディベロッパによって作成された時点でバイトコード1130に変換される。
【0048】
バイトコード1130は、一般に、複製したり、ダウンロードしたり、例えば図6のネットワーク1012などのネットワークを通して配送したり、あるいは図6の一次記憶デバイス1034などの記憶デバイスに格納したりして良い。説明した実施形態において、バイトコード1130はプラットフォーム独立である。つまり、バイトコード1130は、適切な仮想マシン1140を稼動させる実質的にあらゆるコンピュータシステム上で実行して良い。例えばJava(登録商標)環境では、Java(登録商標)仮想マシンを稼動させるコンピュータシステム上でバイトコード1130を実行して良い。
【0049】
バイトコード1130は、仮想マシン1140を含んだランタイム環境1135に供給される。ランタイム環境1135は、一般に、図6のCPU1032などのプロセッサを使用して実行して良い。仮想マシン1140は、コンパイラ1142と、インタープリタ1144と、ランタイムシステム1146とを含む。バイトコード1130は、一般に、コンパイラ1142またはインタープリタ1144のいずれか一方に供給して良い。
【0050】
バイトコード1130がコンパイラ1142に供給された場合は、上述したように、バイトコード1130に含まれたメソッドが機械語命令にコンパイルされる。反対に、バイトコード1130がインタープリタ1144に供給された場合は、バイトコード1130が一度に1バイトコードずつインタープリタ1144に読み込まれる。インタープリタ1144は、各バイトコードを読み込むたびに、各バイトコードによって規定された動作を実施する。一般に、インタープリタ1144は、バイトコード1130の処理とバイトコード1130に関連付けられた動作の実施とを、実質的に連続して行う。
【0051】
オペレーティングシステム1160からメソッドを呼び出す際に、インタープリット済みのメソッドとしてメソッドを呼び出すことが決定された場合は、ランタイムシステム1146は、インタープリタ1144からメソッドを取得して良い。反対に、コンパイル済みメソッドとしてメソッドを呼び出すことが決定された場合は、ランタイムシステム1146は、コンパイラ1142を活動化させる。すると、コンパイラ1142は、バイトコード1130から機械語命令を生成し、それらの機械語命令を実行する機械語命令は、一般に、仮想マシン1140が終了した時点で廃棄される。仮想マシンの動作、特にJava(登録商標)仮想マシンの動作に関しては、Tim LindholmおよびFrank Yellinによる「The JavaTM Virtual Machine Specification(Java[登録商標]仮想マシン仕様)」(ISBN 0-201-63452-X)に詳述されており、本書全体を引用して本明細書に組み込むものとする。
【0052】
いくつかの実施形態のみを取り上げて説明したが、本発明の趣旨もしくは範囲から逸脱することなしに、その他多くの形で本発明を実施可能であることを理解すべきである。例えば、新世代の旧い区域で掃除用の世代ガーベッジコレクションを実施することに関連したステップを、変更したり、追加したり、あるいは削除したりして良い。例として、掃除用の世代ガーベッジコレクションに、現行の若い区域すなわち以前の旧い区域に関連したメモリのビットの値をゼロに設定するステップを含ませて良い。
【0053】
新世代の若い区域と旧い区域とを分離する境界は、柔軟性を有したものとして説明したが、実施形態によっては、この境界を固定することも可能であることを理解すべきである。つまり、若い区域および旧い区域の相対的なサイズが一定となるように、境界を固定しても良い。例えば、若い区域と旧い区域とが実質的に同じサイズになるように、境界を固定しても良い。境界が固定されると、若い新世代と旧い新世代とを交互に担う2つの新世代が別々に有効に存在する。
【0054】
一般には、新世代を複数の区域に分割し、そのうちの1区域に新しいオブジェクトを割り当てて満たしながら、少なくともいくつかの残りの区域を掃除しても良い。複数区域の新世代を使用する場合は、掃除される区域の数を調整することによって、掃除と掃除の間隔と1回の掃除の長さとをバランスさせることができる。このような1実施形態では、新世代の若い区域と他の旧い区域との境界に柔軟性をもたせて移動を可能にし、区域どうしの相対的なサイズを調整できるようにしても良い。例えば、ガーベッジコレクションを実施する以前において、若い区域が特定の旧い1区域よりも大きく、ガーベッジコレクションを実施するにあたってその若い区域と旧い区域とを「交換」する場合は、新しい旧い区域のスペースは、以前の若い区域のオブジェクトを全て含むだけ大きさを有さないかもしれない。つまり、新しい旧い区域は、満杯であったりひいては新しい若い区域にオーバーフローしたりすることがある。このような場合は、新しい旧い区域のオブジェクトのいくつかが、新しい若い区域に追放されるようにしてもよい。
【0055】
あるいは、境界が柔軟性を有していて区域のサイズが実質的に等しくない場合は、新しい旧い区域が常に以前の若い区域と同じサイズを有するように、この境界を移動させても良い。具体的には、ガーベッジコレクションが生じるたびに新しい旧い区域がオーバーフローする事態を回避するために、新しい旧い区域が以前の若い区域と同じサイズを有するように境界を移動させても良い。
【0056】
前述したように、新世代の各区域のサイズ変更は、動的なプロセスであっても良い。例えば、所望の回数よりも頻繁にガーベッジコレクションが生じていることが観測された場合は、若い区域のサイズを大きくし、ガーベッジコレクションが始まるまでに、より多くの旧い区域のオブジェクトがデッド状態になるようにしても良い。また、旧い区域でのガーベッジコレクションの最中に、かなりの数のライブオブジェクトが旧い世代にコピーされていると決定された場合も、若い区域のサイズを大きくして良い。反対に、旧い区域でのガーベッジコレクションが稀にしか生じず、コピーされるライブオブジェクトの数も多くない場合は、若い区域のサイズを小さくして良い。
【0057】
新世代と旧世代とに分割された管理メモリ領域に適したものとして、分割された新世代、すなわち若い区域と旧い区域とに有効に分割された新世代の説明を行ってきた。しかしながら、このような分割された新世代は、他の管理メモリ領域に同様に実装することも当然ながら可能である。例えば、新世代および旧世代に加えてfromスペースまたはtoスペースを含んだ管理メモリ領域に対しても、本発明の趣旨または範囲から逸脱することなくこの分割された新世代を実装することが可能である。したがって、上述した実施例は例示的であって限定的ではないと考えられ、本発明は、ここで挙げた詳細に限定されず、添付した特許請求の範囲内で変更することが可能である。
【図面の簡単な説明】
【図1a】 従来の1メモリスペースを示した概略図である。
【図1b】 従来の別のメモリスペースを示した概略図である。
【図2】 従来のメモリスペースすなわち図1aのメモリスペース102でガーベッジコレクションを実施するプロセスを示したフローチャートである。
【図3】 区分化された新世代を有したメモリスペースを、本発明の1実施形態にしたがって示した概略図である。
【図4】 区分化された新世代を有したメモリスペースすなわち図3のメモリスペース302でガーベッジコレクションを実施するプロセスを、本発明の1実施形態にしたがって示したフローチャートである。
【図5】 オブジェクトをメモリスペースに割り当てるプロセスを、本発明の1実施形態にしたがって示したフローチャートである。
【図6】 本発明の実装に適した汎用コンピュータシステムを示した概略図である。
【図7】 図6のコンピュータシステムによってサポートされ且つ本発明の実装に適した仮想マシンを示した概略図である。
【符号の説明】
102…メモリスペース
104…新世代
106…旧世代
110…オブジェクト
114…ポインタ
202…メモリスペース
204…新世代
205…fromスペースおよびtoスペース
206…旧世代
210…オブジェクト
302…メモリスペース
306…新世代
310…旧世代
314…オブジェクト
318a…若い区域
318b…旧い区域
322…境界
1012…ネットワーク接続
1030…コンピュータシステム
1032…プロセッサ
1034…一次記憶デバイス
1036…一次記憶デバイス
1038…二次記憶媒体
1040…入出力デバイス
1105…コンパイルタイム環境
1110…ソースコード
1120…コンパイラ
1130…バイトコード
1135…ランタイム環境
1140…仮想マシン
1142…コンパイラ
1144…インタープリタ
1146…ランタイムシステム
1160…オペレーティングシステム

Claims (14)

  1. 最新に割り当てられたオブジェクトを格納するように構成された第1の領域と、それよりも旧いオブジェクトを格納するように構成された第2の領域と、を含んだ管理メモリ領域において、メモリスペースを再利用するためのコンピュータにより実行される方法であって、
    前記第1の領域のうち新しいオブジェクトの割り当てをサポートするように構成された第1の区域が実質的に満杯になったか否かを決定する工程と、
    前記第1の区域が実質的に満杯になったと決定された場合に、前記第1の領域の第2の区域でガーベッジコレクションを実施する工程と、
    新しいオブジェクトの割り当てをサポートする構成を有するように前記第2の区域を設定する工程と、
    新しいオブジェクトの割り当てをサポートする構成をもはや有しないように前記第1の区域を設定する工程と
    を備える方法。
  2. 請求項1に記載のコンピュータにより実行される方法であって、
    前記第1の領域の前記第2の区域で前記ガーベッジコレクションを実施する工程は、前記第1の領域の前記第2の区域から前記第2の領域へとライブオブジェクトをコピーする工程を含む、方法。
  3. 請求項1または2に記載のコンピュータにより実行される方法であって、
    前記第1の区域および前記第2の区域は境界によって区分されており、
    前記コンピュータにより実行される方法は、さらに、前記境界を調整して前記第1の区域および前記第2の区域の相対的なサイズを変更する工程を含む、方法。
  4. 請求項1ないし3のいずれかに記載のコンピュータにより実行される方法であって、さらに、
    新しいオブジェクトの割り当てをサポートするように前記第2の区域を設定した後に、前記第2の区域に新しいオブジェクトを割り当てようと試みる工程と、
    前記第2の区域が実質的に満杯になったか否かを決定する工程と、
    前記第2の区域が実質的に満杯になっていないと決定された場合に、前記新しいオブジェクトを前記第2の区域に割り当てる工程と、
    前記第2の区域が実質的に満杯になったと決定された場合に、前記第1の区域でガーベッジコレクションを実施する工程と
    を備える方法。
  5. 請求項4に記載のコンピュータにより実行される方法であって、前記第2の区域が実質的に満杯になったと決定された場合に、前記コンピュータにより実行される方法は、さらに、
    新しいオブジェクトの割り当てをサポートする構成を有しないように前記第2の区域を設定する工程と、
    新しいオブジェクトの割り当てをサポートする構成を有するように前記第1の区域を設定する工程と、
    前記新しいオブジェクトを前記第1の区域に割り当てる工程と
    を備える方法。
  6. 請求項1ないし5のいずれかに記載のコンピュータにより実行される方法であって、
    前記第1の区域が実質的に満杯になったか否かを決定する工程は、前記第1の区域が新しいオブジェクトの割り当てに十分なメモリスペースを有するか否かを決定する工程を含む、方法。
  7. 第1の領域と第2の領域とを含んだコンピュータシステムの管理メモリ領域において、メモリスペースを再利用するためのコンピュータプログラムを記録するコンピュータ読み取り可能媒体であって、
    請求項1ないし6のいずれかに記載の動作のそれぞれを実行するためのコンピュータコードを備えるコンピュータプログラムを記録するコンピュータ読み取り可能媒体
  8. 請求項7に記載のコンピュータ読み取り可能媒体であって、
    前記コンピュータ読み取り可能媒体は、CD−ROM、フロッピィディスク、光ディスク、テープ、及び、ハードドライブよりなる群から選択される、コンピュータ読み取り可能媒体。
  9. 最新に割り当てられたオブジェクトを格納するように構成された第1の領域と、それよりも旧いオブジェクトを格納するように構成された第2の領域と、を含んだ管理メモリ領域において、メモリスペースを再利用するためのコンピュータシステムであって、
    プロセッサと、
    前記第1の領域のうち新しいオブジェクトの割り当てをサポートするように構成された第1の区域が実質的に満杯になった時点を決定するための決定部と、
    前記第1の区域が実質的に満杯になったと決定された場合に、前記第1の領域の第2の区域を掃除するように構成されたガーベッジコレクタと、
    新しいオブジェクトの割り当てをサポートする構成を有するように前記第2の区域を設定し、さらに、新しいオブジェクトの割り当てをサポートする構成を有しないように前記第1の区域を設定するように構成されたトラッキングメカニズムと、
    を備えるコンピュータシステム。
  10. 請求項9に記載のコンピュータシステムであって、
    前記ガーベッジコレクタは、さらに、前記第2の区域から前記第2の領域へとライブオブジェクトをコピーするように構成されている、コンピュータシステム。
  11. 請求項10に記載のコンピュータシステムであって、
    前記第1の区域および前記第2の区域は境界によって分離されており、
    前記コンピュータシステムは、さらに、
    前記境界を移動させて、前記第1の区域および前記第2の区域の相対的なサイズを変更させるための調整部を備える、コンピュータシステム。
  12. 請求項10または11に記載のコンピュータシステムであって、さらに、
    新しいオブジェクトの割り当てをサポートするように前記第2の区域を設定した後に、前記第2の区域に新しいオブジェクトを割り当てようと試みるためのオブジェクト割り当て部と、
    前記第2の区域が実質的に満杯になったか否かを決定するための決定部と
    を備え、
    前記オブジェクト割り当て部は、前記第2の区域が実質的に満杯でないと決定された場合に前記第2の区域に前記新しいオブジェクトを割り当て、
    前記ガーベッジコレクタは、前記第2の区域が実質的に満杯になったと決定された場合に前記第1の区域を掃除する、コンピュータシステム。
  13. 請求項12に記載のコンピュータシステムであって、
    前記トラッキングメカニズムは、さらに、新しいオブジェクトの割り当てをサポートする構成を有しないように前記第2の区域を設定し、新しいオブジェクトの割り当てをサポートする構成を有するように前記第1の区域を設定するように構成され、前記オブジェクト割り当て部は、前記新しいオブジェクトを前記第1の区域に割り当てる、コンピュータシステム。
  14. オブジェクトを格納するように構成されたコンピュータシステムのメモリであって、
    第1の領域と第2の領域とを備え、
    前記第1の領域は、第1の区域と第2の区域とに区分されており、前記第1の区域は最新に割り当てられたオブジェクトを格納するように構成され、前記第2の区域は前記最新に割り当てられたオブジェクトよりも前に割り当てられた第1のオブジェクトを格納するとともに、前記第1の区域が実質的に満杯になった場合にガーベッジコレクションを受けるように構成されており、
    前記第2の領域は、前記第1のオブジェクトより前に割り当てられた第2のオブジェクトを格納するように構成されており、
    前記第2の区域は、ガーベッジコレクションを受ける際に、前記最新に割り当てられたオブジェクトよりもさらに最新に割り当てられる第3のオブジェクトを格納するように設定される、メモリ
JP2001540582A 1999-11-29 2000-11-28 掃除用のガーベッジコレクションの効果を高めるための方法、コンピュータ読み取り可能媒体、コンピュータシステム、及び、メモリ Expired - Lifetime JP4756231B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/450,847 1999-11-29
US09/450,847 US6681306B1 (en) 1999-11-29 1999-11-29 Method and apparatus for increasing scavenging garbage collection effectiveness
PCT/US2000/042329 WO2001038986A2 (en) 1999-11-29 2000-11-28 Method and apparatus for increasing scavenging garbage collection effectiveness

Publications (3)

Publication Number Publication Date
JP2003515812A JP2003515812A (ja) 2003-05-07
JP2003515812A5 JP2003515812A5 (ja) 2008-01-17
JP4756231B2 true JP4756231B2 (ja) 2011-08-24

Family

ID=23789733

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001540582A Expired - Lifetime JP4756231B2 (ja) 1999-11-29 2000-11-28 掃除用のガーベッジコレクションの効果を高めるための方法、コンピュータ読み取り可能媒体、コンピュータシステム、及び、メモリ

Country Status (6)

Country Link
US (1) US6681306B1 (ja)
EP (1) EP1234238B1 (ja)
JP (1) JP4756231B2 (ja)
AU (1) AU4138101A (ja)
DE (1) DE60034702T2 (ja)
WO (1) WO2001038986A2 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6769004B2 (en) * 2000-04-27 2004-07-27 Irobot Corporation Method and system for incremental stack scanning
US7213075B2 (en) * 2000-12-15 2007-05-01 International Business Machines Corporation Application server and streaming server streaming multimedia file in a client specific format
US7337201B1 (en) * 2003-10-08 2008-02-26 Sun Microsystems, Inc. System and method to increase memory allocation efficiency
KR100608606B1 (ko) * 2004-01-28 2006-08-03 삼성전자주식회사 적응형 가비지 컬렉션 방법 및 상기 방법을 수행하는 장치
US7325108B2 (en) * 2005-03-15 2008-01-29 International Business Machines Corporation Method and system for page-out and page-in of stale objects in memory
US7827373B2 (en) * 2005-10-31 2010-11-02 Honeywell International Inc. System and method for managing a short-term heap memory
US7599973B2 (en) * 2006-01-12 2009-10-06 Sun Microsystems, Inc. Method and apparatus for decreasing object copying by a generational, copying garbage collector
US20070233757A1 (en) * 2006-03-30 2007-10-04 Fujitsu Limited Garbage collection method and a hierarchy storage device
US8024378B2 (en) * 2006-12-20 2011-09-20 Oracle International Corporation System and method to reduce the promotion rate in a generational garbage collector in a virtual machine environment
JP5539974B2 (ja) * 2008-06-18 2014-07-02 トムソン ライセンシング デジタル文書の表示およびその文書内のナビゲーションのためにその文書を前処理する方法
US8301672B2 (en) * 2008-09-22 2012-10-30 Advanced Micro Devices, Inc. GPU assisted garbage collection
US8417904B2 (en) * 2010-03-17 2013-04-09 Seagate Technology Llc Garbage collection management in a data storage device
US8402205B2 (en) * 2010-03-18 2013-03-19 Seagate Technology Llc Multi-tiered metadata scheme for a data storage array
US8423589B2 (en) 2011-03-14 2013-04-16 International Business Machines Corporation Copy collector with efficient abort-on-copy transition to mark collector
US9374191B2 (en) * 2012-05-17 2016-06-21 Apple Inc. Outer loop link adaptation for device resumption
US8694562B2 (en) * 2012-05-22 2014-04-08 Microsoft Corporation Generational garbage collection for a pool-based heap
US20140304478A1 (en) * 2013-04-05 2014-10-09 Nec Laboratories America, Inc. Space Reclamation of Objects in a Persistent Cache
US9355029B2 (en) * 2013-06-28 2016-05-31 Sap Se Thread-based memory management with garbage collection
CN103593300B (zh) * 2013-11-15 2017-05-03 浪潮电子信息产业股份有限公司 一种内存分配回收方法
RU2666334C2 (ru) * 2015-06-30 2018-09-06 Общество С Ограниченной Ответственностью "Яндекс" Способ обработки данных
US10379775B2 (en) 2016-06-28 2019-08-13 Vmware, Inc. Notification service in a decentralized control plane of a computing system
US11797441B2 (en) * 2020-01-10 2023-10-24 Micron Technology, Inc. Cache media management

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62295145A (ja) * 1986-06-13 1987-12-22 Fujitsu Ltd ガ−ベジコレクシヨン方式
JPS6418855A (en) * 1987-07-13 1989-01-23 Nec Corp Memory area control system
JPH1115726A (ja) * 1997-05-30 1999-01-22 Sun Microsyst Inc コンピュータ制御方法、装置、システム、およびコンピュータプログラム製品

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3086773B2 (ja) * 1994-03-16 2000-09-11 株式会社東芝 光ディスク装置
US5787466A (en) * 1996-05-01 1998-07-28 Sun Microsystems, Inc. Multi-tier cache and method for implementing such a system
US6308185B1 (en) * 1998-03-06 2001-10-23 Sun Microsystems, Inc. Methods and apparatus for generational dynamic management of computer memory
US6209066B1 (en) * 1998-06-30 2001-03-27 Sun Microsystems, Inc. Method and apparatus for memory allocation in a multi-threaded virtual machine

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62295145A (ja) * 1986-06-13 1987-12-22 Fujitsu Ltd ガ−ベジコレクシヨン方式
JPS6418855A (en) * 1987-07-13 1989-01-23 Nec Corp Memory area control system
JPH1115726A (ja) * 1997-05-30 1999-01-22 Sun Microsyst Inc コンピュータ制御方法、装置、システム、およびコンピュータプログラム製品

Also Published As

Publication number Publication date
JP2003515812A (ja) 2003-05-07
DE60034702D1 (de) 2007-06-14
US6681306B1 (en) 2004-01-20
WO2001038986A2 (en) 2001-05-31
EP1234238B1 (en) 2007-05-02
AU4138101A (en) 2001-06-04
WO2001038986A3 (en) 2001-12-13
EP1234238A2 (en) 2002-08-28
DE60034702T2 (de) 2008-01-17

Similar Documents

Publication Publication Date Title
JP4756231B2 (ja) 掃除用のガーベッジコレクションの効果を高めるための方法、コンピュータ読み取り可能媒体、コンピュータシステム、及び、メモリ
US6839726B2 (en) Apparatus, method, and program for implementing garbage collection suitable for real-time processing
JP4511653B2 (ja) マルチスレッド仮想マシン内におけるメモリ・アロケーションの方法及び装置
US6434577B1 (en) Scalable-remembered-set garbage collection
US6185581B1 (en) Train-algorithm-based garbage collector employing fixed-size remembered sets
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
US6199075B1 (en) Method and apparatus for generational garbage collection of a heap memory shared by multiple processors
US6424977B1 (en) Train-algorithm-based garbage collector employing reduced oversized-object threshold
US7143124B2 (en) Detection of dead regions during incremental collection
US6415302B1 (en) Train-algorithm-based garbage collector employing farthest-forward-car indicator
JP4265610B2 (ja) プログラム制御装置、プログラム制御方法、およびプログラム記録媒体
WO2002054235A2 (en) Methods and apparatus for enabling local java object allocation and collection
WO2002054249A1 (en) Methods and apparatus for optimizing garbage collection
US7870171B2 (en) Method and system for garbage collection in a multitasking environment
US7620943B1 (en) Using class properties to segregate objects in a generation managed by the train algorithm
US7062518B2 (en) Efficiently supporting the existence of long trains in a generation managed by the train algorithm
JP5051961B2 (ja) モジュール式ガーベッジコレクタを実現するための方法および装置
CN114051610A (zh) 基于arena的存储器管理
JP2006172495A (ja) プログラム制御装置、プログラム制御方法、およびプログラム記録媒体
US20090228537A1 (en) Object Allocation System and Method
US7096329B2 (en) Better placement of objects promoted into a generation managed by the train algorithm
JP4345748B2 (ja) メモリ割当装置、メモリ割当方法、およびプログラム記録媒体
US7024437B2 (en) Better placement of objects reachable from special objects during collection based on the train algorithm
US7146390B2 (en) Staging the processing of remembered-set entries as part of collection based on the train algorithm

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071119

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071119

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110401

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: 20110426

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20110520

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110517

R150 Certificate of patent or registration of utility model

Ref document number: 4756231

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140610

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term