(57)【要約】【課題】終了メソッドを持つオブジェクトを含む場合にも、ｃｏｐｙｉｎｇ  ＧＣを効率良く行う手法を提供する。【解決手段】メモリ領域に設けられたヒープ１２０が、オブジェクトの割り当てに使用されている使用領域（領域Ａ）および次にオブジェクトの割り当てに使用されるＴｏ領域（領域Ｂ）を含む複数の領域に分割されており、ガーベージ・コレクションにおいて、使用領域に割り当てられているオブジェクトのうち、ルートセット１１０から到達可能なオブジェクトをＴｏ領域にコピーする。また、使用領域に割り当てられているオブジェクトのうち、ルートセット１１０から到達できず、かつ終了メソッドを持つオブジェクトである終了可能オブジェクトを、終了処理の対象とする。そして、ガーベージ・コレクションの終了後に、使用領域に割り当てられており、終了処理の対象である終了可能オブジェクトに対する終了処理を実行する。【選択図】図２
2009266113.tif 000002
【特許請求の範囲】
【請求項１】
ガーベージ・コレクションを行うメモリ管理方法において、
メモリ領域に設けられたヒープ領域が、オブジェクトの割り当てに使用されている第１領域およびガーベージ・コレクション後にオブジェクトの割り当てに使用される第２領域を含む複数の領域に分割されており、
前記ガーベージ・コレクションにおいて、前記第１領域に割り当てられているオブジェクトのうち、ルートセットから到達可能なオブジェクトを前記第２領域にコピーするステップと、
前記ガーベージ・コレクションにおいて、前記第１領域に割り当てられているオブジェクトのうち、ルートセットから到達できず、かつ終了メソッドを持つオブジェクトである終了可能オブジェクトを、終了処理の対象とするステップと、
前記ガーベージ・コレクションの終了後に、前記第１領域に割り当てられており、終了処理の対象である前記終了可能オブジェクトに対する終了処理を実行するステップと、
を含む、方法。
【請求項２】
前記第１領域における前記終了可能オブジェクトおよび当該終了可能オブジェクトからのみ到達可能なオブジェクトが割り当てられている領域は、前記終了処理が終了した後に解放される、請求項１に記載の方法。
【請求項３】
前記ガーベージ・コレクションの起動時に、前回のガーベージ・コレクションで終了処理の対象とされた前記終了可能オブジェクトに対する終了処理が終了しているか否かを確認するステップをさらに含み、
前記終了処理が終了していない場合は、当該終了処理が終了するのを待って前記ガーベージ・コレクションを実行する、請求項１に記載の方法。
【請求項４】
前記終了可能オブジェクトが持つ前記終了メソッドにおいて、前記第２領域にコピーされた前記オブジェクトへの参照がある場合に、当該参照の参照先を当該第２領域における当該オブジェクトに更新するステップをさらに含む、請求項１に記載の方法。
【請求項５】
前記参照先を更新するステップは、前記ガーベージ・コレクションの実行時または前記終了処理の実行時に実行される、請求項４に記載の方法。
【請求項６】
前記終了可能オブジェクトを終了処理の対象とするステップでは、当該終了可能オブジェクトが前記終了メソッドを実行する終了処理スレッドにより使用される終了処理用キューに登録される、請求項１に記載の方法。
【請求項７】
前記ガーベージ・コレクションの起動時に、前記終了処理用キューに未処理の前記終了可能オブジェクトがあるか否かを確認するステップをさらに含み、
未処理の前記終了可能オブジェクトがある場合は、当該終了可能オブジェクトに対する終了処理が終了するのを待って前記ガーベージ・コレクションを実行する、請求項６に記載の方法。
【請求項８】
ガーベージ・コレクションを行うメモリ管理方法において、
メモリ領域に設けられたヒープ領域が、オブジェクトの割り当てに使用されている第１領域およびガーベージ・コレクション後にオブジェクトの割り当てに使用される第２領域を含む複数の領域に分割されており、
前記ガーベージ・コレクションにおいて、前記第１領域に割り当てられているオブジェクトのうち、ルートセットから到達可能なオブジェクトを前記第２領域にコピーするステップと、
前記ガーベージ・コレクションにおいて、前記第１領域に割り当てられているオブジェクトのうち、ルートセットから到達できず、かつ終了メソッドを持つオブジェクトである終了可能オブジェクトを、当該終了可能オブジェクトの終了メソッドを実行する終了処理スレッドにより使用される終了処理用キューに登録するステップと、
前記終了可能オブジェクトが持つ前記終了メソッドにおいて、前記第２領域にコピーされた前記オブジェクトへの参照がある場合に、当該参照の参照先を当該第２領域における当該オブジェクトに更新するステップと、
前記ガーベージ・コレクションの終了後に、前記第１領域に割り当てられており、前記終了処理用キューに登録されている前記終了可能オブジェクトに対する終了処理を実行するステップと、
次のガーベージ・コレクションの起動時に、前記終了処理用キューに未処理の前記終了可能オブジェクトがあるか否かを確認するステップと、を含み、
未処理の前記終了可能オブジェクトがある場合は、当該終了可能オブジェクトに対する終了処理が終了するのを待って前記次のガーベージ・コレクションを実行する、方法。
【請求項９】
コンピュータに、
オブジェクトの割り当てに使用されている第１領域およびガーベージ・コレクション後にオブジェクトの割り当てに使用される第２領域を含む複数の領域に分割された、メモリ上のヒープ領域に対して実行されるガーベージ・コレクションにおいて、前記第１領域に割り当てられているオブジェクトのうち、ルートセットから到達可能なオブジェクトを前記第２領域にコピーする処理と、
前記ガーベージ・コレクションにおいて、前記第１領域に割り当てられているオブジェクトのうち、ルートセットから到達できず、かつ終了メソッドを持つオブジェクトである終了可能オブジェクトを、終了処理の対象とする処理とを実行させ、
前記ガーベージ・コレクションの終了後に、前記第１領域に割り当てられており、終了処理の対象である前記終了可能オブジェクトに対する終了処理を実行させる、プログラム。
【請求項１０】
ガーベージ・コレクションを行うメモリ管理システムにおいて、
オブジェクトの割り当てに使用されている第１領域およびガーベージ・コレクション後にオブジェクトの割り当てに使用される第２領域を含む複数の領域に分割されたヒープ領域を持つメモリと、
前記第１領域に割り当てられているオブジェクトのうち、ルートセットから到達可能なオブジェクトを前記第２領域にコピーし、ルートセットから到達できず、かつ終了メソッドを持つオブジェクトである終了可能オブジェクトを、終了処理の対象とするガーベージ・コレクション実行手段と、
ガーベージ・コレクションの終了後に、前記第１領域に割り当てられており、終了処理の対象である前記終了可能オブジェクトに対する終了処理を実行する終了処理実行手段と、
を備える、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ管理方法およびシステムに関し、特に、ガーベージ・コレクションに関する。
【背景技術】
【０００２】
Ｊａｖａ（米国サン・マイクロシステムズ社の登録商標）言語等、メモリ管理機能としてガーベージ・コレクションを有する言語では、ガーベージ・コレクションを実行する際に、資源の解放などの処理を行うためのメソッド（例えば、Ｊａｖａのfinalizeメソッド、以下「終了メソッド」と呼ぶ）を定義できるものがある。ガーベージ・コレクションにおいて回収可能（使用されない）と判断されたオブジェクト（以下「回収可能（unreachable）オブジェクト」と呼ぶ）が終了メソッドを持たない場合、この回収可能オブジェクトは直ちに回収される。一方、回収可能オブジェクトが終了メソッドを持つ場合（以下、この終了メソッドを持つ回収可能オブジェクトを「終了可能（finalizable）オブジェクト」と呼ぶ）、この終了可能オブジェクトを直ちに回収するのではなく、まず終了メソッドを実行する必要がある。そして、終了処理（finalize処理）を実行するスレッド（以下「終了処理スレッド」と呼ぶ）により終了メソッドが実行された後に（通常は次のガーベージ・コレクションの実行サイクルで）、終了可能オブジェクトが回収される。
【０００３】
ガーベージ・コレクションには、いくつかの種類が存在し、代表的なガーベージ・コレクションのひとつに、ｃｏｐｙｉｎｇ  ＧＣと呼ばれる手法がある（例えば、非特許文献１参照）。このｃｏｐｙｉｎｇ  ＧＣでは、ヒープ全体を２つ（もしくはそれ以上）の領域に分け、そのうち１つを使って新しいオブジェクトの割り当てが行われる。そして、使用している領域（以下「使用領域」と呼ぶ）の空きが無くなると、ガーベージ・コレクションが起動する。そして、ルートセットから到達可能（reachable）なオブジェクト（すなわち、使用される可能性のあるオブジェクト）が、これまで新しいオブジェクトの割り当てに使われていた使用領域以外の１つの領域（以下「Ｔｏ領域」と呼ぶ）にコピーされる。ガーベージ・コレクションの終了後は、Ｔｏ領域のうち、コピーされたオブジェクトの次の位置から新しいオブジェクトの割り当てが行われる。
【０００４】
【非特許文献１】C. J. Cheney, "A Nonrecursive List Compacting Algorithm", Communications of the ACM 13 (11), 1970.
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記のように、終了メソッドを持つ終了可能オブジェクトに対しては、終了メソッドが実行された後にオブジェクトの回収が行われる。このとき、終了メソッドを実行するためには、終了可能オブジェクトから到達可能（finalizer-reachable）な全てのオブジェクトの回収を、終了メソッドが終了するまで遅らせなければならない。したがって、ガーベージ・コレクションの実装においては、次のような手続が実行されることとなる。
【０００６】
１．ルートセット（スタックなど）から到達可能なオブジェクトを探索。
２．上記探索の結果から判別された終了可能オブジェクトを終了処理スレッドの処理待ちキュー（finalize queue）に追加。
３．終了可能オブジェクトから到達可能なオブジェクトを再度探索。
４．不要なオブジェクトを回収。
【０００７】
終了メソッドを持つオブジェクトを大量に生成するワークロードにおいては、大量の終了可能オブジェクトおよび終了可能オブジェクトから到達可能なオブジェクトによってメモリの回収率が低下する。そのため、ガーベージ・コレクションの頻度が増加し、さらにガーベージ・コレクションの実行時間が増大してしまう。
【０００８】
上記のように、ｃｏｐｙｉｎｇ  ＧＣでは、ガーベージ・コレクションの際にヒープが現在使用されている使用領域からＴｏ領域へ移行する。そのため、ルートセットから到達できない回収可能オブジェクトであっても、それが終了メソッドを実行するために直ちに回収できない終了可能オブジェクトである場合は、一旦Ｔｏ領域へコピーする必要がある。そのため、ルートセットから到達可能なオブジェクト以外のオブジェクトをコピーする操作が行われることとなり、効率の低下を招く。
【０００９】
本発明は、これらの課題を解決し、終了メソッドを持つオブジェクトを含む場合にもガーベージ・コレクションを効率良く行う手法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記の目的を達成するため、本発明は、次のようなメモリ管理方法として実現される。この方法は、ｃｏｐｙｉｎｇ  ＧＣによるガーベージ・コレクションを行うメモリ管理方法において、メモリ領域に設けられたヒープ領域が、オブジェクトの割り当てに使用されている第１領域およびガーベージ・コレクション後にオブジェクトの割り当てに使用される第２領域を含む複数の領域に分割されており、ガーベージ・コレクションにおいて、第１領域に割り当てられているオブジェクトのうち、ルートセットから到達可能なオブジェクトを第２領域にコピーするステップと、第１領域に割り当てられているオブジェクトのうち、ルートセットから到達できず、かつ終了メソッドを持つオブジェクトである終了可能オブジェクトを、終了処理の対象とするステップと、ガーベージ・コレクションの終了後に、第１領域に割り当てられており、終了処理の対象である終了可能オブジェクトに対する終了処理を実行するステップと、を含む。
第１領域における終了可能オブジェクトおよび終了可能オブジェクトからのみ到達可能なオブジェクトが割り当てられている領域は、終了処理が終了した後に解放される。
【００１１】
また、本発明による他のメモリ管理方法は、ｃｏｐｙｉｎｇ  ＧＣによるガーベージ・コレクションを行うメモリ管理方法において、メモリ領域に設けられたヒープ領域が、オブジェクトの割り当てに使用されている第１領域およびガーベージ・コレクション後にオブジェクトの割り当てに使用される第２領域を含む複数の領域に分割されており、ガーベージ・コレクションにおいて、第１領域に割り当てられているオブジェクトのうち、ルートセットから到達可能なオブジェクトを第２領域にコピーするステップと、第１領域に割り当てられているオブジェクトのうち、ルートセットから到達できず、かつ終了メソッドを持つオブジェクトである終了可能オブジェクトを、この終了可能オブジェクトの終了メソッドを実行する終了処理スレッドにより使用される終了処理用キューに登録するステップと、終了可能オブジェクトが持つ終了メソッドにおいて、第２領域にコピーされたオブジェクトへの参照がある場合に、この参照の参照先を第２領域におけるオブジェクトに更新するステップと、ガーベージ・コレクションの終了後に、第１領域に割り当てられており、終了処理用キューに登録されている終了可能オブジェクトに対する終了処理を実行するステップと、次のガーベージ・コレクションの起動時に、終了処理用キューに未処理の終了可能オブジェクトがあるか否かを確認するステップと、を含み、未処理の終了可能オブジェクトがある場合は、その終了可能オブジェクトに対する終了処理が終了するのを待って次のガーベージ・コレクションを実行する。
【００１２】
また、本発明は、コンピュータに上記のメモリ管理方法における各ステップに対応する処理を実行させるプログラムとしても実現される。このプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより提供することができる。
【００１３】
さらに本発明は、次のように構成されたシステムとしても実現される。このシステムは、ｃｏｐｙｉｎｇ  ＧＣによるガーベージ・コレクションを行うメモリ管理システムにおいて、オブジェクトの割り当てに使用されている第１領域およびガーベージ・コレクション後にオブジェクトの割り当てに使用される第２領域を含む複数の領域に分割されたヒープ領域を持つメモリと、第１領域に割り当てられているオブジェクトのうち、ルートセットから到達可能なオブジェクトを第２領域にコピーし、ルートセットから到達できず、かつ終了メソッドを持つオブジェクトである終了可能オブジェクトを、終了処理の対象とするガーベージ・コレクション実行手段と、ガーベージ・コレクションの終了後に、第１領域に割り当てられており、終了処理の対象である終了可能オブジェクトに対する終了処理を実行する終了処理実行手段と、を備える。
【発明の効果】
【００１４】
以上のように構成された本発明によれば、終了メソッドを持つオブジェクトを含む場合にも、ｃｏｐｙｉｎｇ  ＧＣによるガーベージ・コレクションを効率良く行うことができる。
【発明を実施するための最良の形態】
【００１５】
以下、添付図面を参照して、本発明の実施形態について詳細に説明する。
本実施形態は、ｃｏｐｙｉｎｇ  ＧＣによるガーベージ・コレクションを対象とする。本実施形態が適用されるコンピュータ・システムでは、大まかに次のような手順でガーベージ・コレクションが実行される。なお、以下の説明において、回収可能オブジェクト、終了可能オブジェクト、終了可能オブジェクトからのみ到達可能なオブジェクトは、いずれもルートセットから到達できないオブジェクトである。
【００１６】
１．まず、ルートセットから到達可能なオブジェクトをＴｏ領域にコピーする。一方、終了可能オブジェクトおよび終了可能オブジェクトからのみ到達可能なオブジェクトはＴｏ領域にコピーしない。
２．終了処理スレッドが、元の領域（それまで使用領域であった領域）に保持されているオブジェクトに対して終了処理を実行する。
３．次回のガーベージ・コレクションの起動時に、前回のガーベージ・コレクションにおいて認識された終了可能オブジェクトに対する終了処理が終了していることを確認する。
【００１７】
上記の手法により、従来のｃｏｐｙｉｎｇ  ＧＣと比べて、終了可能オブジェクトおよび終了可能オブジェクトからのみ到達可能なオブジェクトについては、Ｔｏ領域へコピーする操作が省略されることとなる。ただし、上記のようにシステムは、次にガーベージ・コレクションが起動して元の領域が再利用される前に終了可能オブジェクトおよび終了可能オブジェクトからのみ到達可能なオブジェクトが安全に回収されることを保証するために、終了処理が終了していることを確認する。ガーベージ・コレクションの起動時に前回のガーベージ・コレクションで終了処理の対象として認識された終了可能オブジェクトに対する終了処理が済んでいないときは、システムは、終了処理が終了するのを待ってガーベージ・コレクションを実行する。
【００１８】
次に、具体的なメモリ構造の例を示しながら、本実施形態によるガーベージ・コレクションについて詳細に説明する。
図１は、本実施形態によるガーベージ・コレクションが行われるメモリ構造の例を示す図である。
図１に示す例では、メモリ１００のメモリ領域に、ルートセット１１０と、ヒープ１２０と、終了処理スレッドの処理待ちキューである終了処理用キュー１３０とが設けられている。ヒープ１２０は、領域Ａと領域Ｂの二つの領域に分けられており、ガーベージ・コレクションが行われるたびに、使用領域が交互に入れ替わるものとする。
【００１９】
図１の状態では、領域Ａが使用領域であり、領域ＢがＴｏ領域である。使用領域である領域Ａには、四つのオブジェクト（ｏｂｊＡ、ｏｂｊＢ、ｏｂｊＣ、ｏｂｊＤ）が割り当てられている。これらのオブジェクトのうち、ｏｂｊＡは、ルートセット１１０から到達可能なオブジェクトである。ｏｂｊＢは、ルートセット１１０から到達できず、終了メソッドを持たない回収可能オブジェクトである。ｏｂｊＣは、ルートセット１１０から到達できず、終了メソッドを持つ終了可能オブジェクトである。ｏｂｊＤは、ｏｂｊＣ（終了可能オブジェクト）からのみ到達可能なオブジェクトである。図１において、矢印は、その矢印が指すオブジェクトへの参照を示す。
【００２０】
図２は、図１の状態でガーベージ・コレクションが行われた様子を示す図である。
図２を参照すると、ｏｂｊＡは、ルートセット１１０から到達可能であり、ガーベージ・コレクションによる回収対象ではないため、Ｔｏ領域である領域Ｂにコピーされている。また、領域ＡにおいてｏｂｊＡが割り当てられていた領域は解放されている。なお、図２において、コピーは白抜きの矢印で示し、解放された領域は破線で示している。ｏｂｊＢは、回収可能オブジェクトであったので、領域ＡにおいてｏｂｊＢが割り当てられていた領域は解放されている。ｏｂｊＣおよびｏｂｊＤは、領域Ｂにコピーされておらず、領域Ａに残されている。また、ｏｂｊＣが終了処理用キュー１３０に登録され、ｏｂｊＣを参照している。これ以降、新しいオブジェクトの割り当ては領域Ｂにおいて行われ、ｏｂｊＣの終了メソッドによる終了処理は、領域Ａに残されているｏｂｊＣおよびｏｂｊＤに対して行われる。
【００２１】
ところで、終了処理において、終了可能オブジェクトから到達可能なオブジェクトは、終了可能オブジェクトからのみ到達可能なオブジェクトとは限らない。図１、２に示した例では、ｏｂｊＤはｏｂｊＣからのみ到達可能である。しかし、終了処理によっては、ｏｂｊＣからｏｂｊＡのようなルートセット１１０からも到達可能なオブジェクトを参照する場合もあり得る。この場合は、オブジェクトがコピーされる際に生成された、領域Ｂのコピー先を示すポインタ（Forwardingポインタ）に基づいて、コピー先のオブジェクトを参照するように、終了処理におけるｏｂｊＣからの参照先を更新する必要がある。この参照先の更新は、ガーベージ・コレクションを実行した際に行っても良いし、終了メソッドの実行時に行っても良い。
【００２２】
図３は、本実施形態のガーベージ・コレクションにおける処理の流れを示すフローチャートである。
メモリ構造は図１に示した構造とし、いま、オブジェクトは領域Ａに割り当てられるものとする。システムにおけるプログラムの実行が進み、領域Ａの空き容量が無くなると、ガーベージ・コレクションが起動する。図３に示すように、ガーベージ・コレクションが起動すると、まず、終了処理用キュー１３０が空か否かがチェックされる（ステップ３０１）。終了処理用キュー１３０が空でない場合、まず終了処理スレッドにより、終了処理用キュー１３０に登録されている全ての終了可能オブジェクトの終了メソッドが実行され（ステップ３０２）、ガーベージ・コレクションは終了処理の終了待ちとなる。
【００２３】
終了処理用キュー１３０が空の場合、または終了処理が終了した後、ガーベージ・コレクションが実行され、まずルートセット１１０から到達可能な全てのオブジェクトがスキャンされて、領域Ｂへコピーされる（ステップ３０３）。そして、領域Ｂにコピーされたオブジェクトおよび回収可能オブジェクトが割り当てられていた領域Ａの領域が解放される。
【００２４】
次に、領域Ａに残っている終了可能オブジェクトが終了処理用キュー１３０に登録される（ステップ３０４）。この登録により、この終了可能オブジェクトは、終了処理スレッドによる終了処理の対象となる。次に、終了可能オブジェクトから到達可能な全てのオブジェクトがスキャンされ、ルートセット１１０からも到達可能なオブジェクトを指す参照がある場合は、その参照先が更新される（ステップ３０５）。なお、上述のように、ステップ３０５の参照先の更新は、ガーベージ・コレクションの終了後、終了処理の実行時に行っても良い。
【００２５】
以上のようにしてガーベージ・コレクションが終了すると、システムは、通常のプログラムの処理に戻る。これ以降、新しいオブジェクトは使用領域となった領域Ｂに割り当てられる。また、終了処理スレッドは、この通常のプログラムの処理と並行して、ステップ３０４で終了処理用キュー１３０に登録された終了可能オブジェクトに対する終了処理を実行する。終了処理は、処理対象である終了可能オブジェクトが持つ終了メソッドを実行することで行われる。この後、システムにおけるプログラムの実行が進み、領域Ｂの空き容量が無くなると、再びガーベージ・コレクションが起動する。この後、新しいオブジェクトは再び使用領域となった領域Ａに割り当てられる。
【００２６】
ここで、本実施形態との比較のために、図１の状態のメモリ１００に対して従来の方法でガーベージ・コレクションが行われた様子を図４に示す。
従来のガーベージ・コレクションでは、ガーベージ・コレクションの終了後に終了処理を実行するために、直ちに回収できる回収可能オブジェクト以外は全て、Ｔｏ領域である領域Ｂにコピーされる。図４を参照すると、ｏｂｊＡに加えてｏｂｊＣおよびｏｂｊＤも領域Ｂにコピーされている。したがって、本実施形態によるガーベージ・コレクションを示す図２と図４とを比較すると、本実施形態では、終了可能オブジェクトおよび終了可能オブジェクトからのみ到達可能なオブジェクトをコピーしない分だけ、オーバーヘッドを削減することができる。
【００２７】
なお、本実施形態によれば、次のガーベージ・コレクションの起動時に、既に終了処理用キュー１３０が空になっていることを確認する。そして、終了処理用キュー１３０が空でない場合は、終了処理が終了するのを待つ。しかし、終了処理用キュー１３０を確認する処理は、上記のオーバーヘッドの削減と比べて問題となるほどのコストは要しない。また、実際には、次回のガーベージ・コレクションのサイクルまでに終了処理は終了しているので、この待ち合わせによるオーバーヘッドが問題となることはほとんどない。
【００２８】
最後に、本実施形態によるメモリ管理を実行するシステムのハードウェア構成について説明する。
図５は、本実施形態が適用されるコンピュータのハードウェア構成例を示す図である。
図５に示すコンピュータ１０は、演算手段であるＣＰＵ（Central Processing Unit）１０ａと、記憶手段であるメイン・メモリ１０ｃおよび磁気ディスク装置（ＨＤＤ：Hard Disk Drive）１０ｇを備える。また、ネットワークを介して外部装置に接続するためのネットワーク・インタフェース・カード１０ｆと、表示出力を行うためのビデオ・カード１０ｄおよび表示装置１０ｊと、音声出力を行うための音声機構１０ｈとを備える。さらに、キーボードやマウス等の入力デバイス１０ｉを備える。
【００２９】
図５に示すように、メイン・メモリ１０ｃおよびビデオ・カード１０ｄは、システム・コントローラ１０ｂを介してＣＰＵ１０ａに接続されている。また、ネットワーク・インタフェース・カード１０ｆ、磁気ディスク装置１０ｇ、音声機構１０ｈおよび入力デバイス１０ｉは、Ｉ／Ｏコントローラ１０ｅを介してシステム・コントローラ１０ｂと接続されている。各構成要素は、システム・バスや入出力バス等の各種のバスによって接続される。例えば、ＣＰＵ１０ａとメイン・メモリ１０ｃの間は、システム・バスやメモリ・バスにより接続される。また、ＣＰＵ１０ａと磁気ディスク装置１０ｇ、ネットワーク・インタフェース・カード１０ｆ、ビデオ・カード１０ｄ、音声機構１０ｈ、入力デバイス１０ｉ等との間は、ＰＣＩ（Peripheral Components Interconnect）、ＰＣＩ  Ｅｘｐｒｅｓｓ、シリアルＡＴＡ（AT Attachment）、ＵＳＢ（Universal Serial Bus）、ＡＧＰ（Accelerated Graphics Port）等の入出力バスにより接続される。
【００３０】
なお、図５は、本実施形態が適用されるのに好適なコンピュータのハードウェア構成を例示するに過ぎず、実際の各サーバが図示の構成に限定されないことは言うまでもない。例えば、ビデオ・カード１０ｄを設ける代わりに、ビデオメモリのみを搭載し、ＣＰＵ１０ａにてイメージ・データを処理する構成としても良い。また、音声機構１０ｈを独立した構成とせず、システム・コントローラ１０ｂやＩ／Ｏコントローラ１０ｅを構成するチップセットの機能として備えるようにしても良い。また、補助記憶装置として磁気ディスク装置１０ｇの他に、各種の光学ディスクやフレキシブル・ディスクをメディアとするドライブを設けても良い。表示装置１０ｊとしては、主として液晶ディスプレイが用いられるが、その他、ＣＲＴディスプレイやプラズマ・ディスプレイ等、任意の方式のディスプレイを用いて良い。
【００３１】
図５に示したようなコンピュータにおいて、プログラムはメイン・メモリ１０ｃに読み込まれ、ＣＰＵ１０ａにより実行される。ＣＰＵ１０ａによりプログラムが実行されることで実現されるメモリ管理機能において、上記の本実施形態のガーベージ・コレクションに関する各処理が実行される。すなわち、このプログラムにより制御されたＣＰＵ１０ａが、図６に示すような、ガーベージ・コレクションを実行するガーベージ・コレクション実行部６１および終了処理を実行する終了処理実行部（終了処理スレッド）６２として機能する。
【００３２】
以上、本実施形態について説明したが、本発明の技術的範囲は上記実施形態に記載の範囲には限定されない。例えば、上記実施形態では、ヒープを２分割してｃｏｐｙｉｎｇ  ＧＣを行った例について説明したが、ヒープを３つ以上の領域に分割して行っても良い。その他、上記実施形態に、種々の変更または改良を加えたものも、本発明の技術的範囲に含まれることは、特許請求の範囲の記載から明らかである。
【図面の簡単な説明】
【００３３】
【図１】本実施形態によるガーベージ・コレクションが行われるメモリ構造の例を示す図である。
【図２】図１の状態でガーベージ・コレクションが行われた様子を示す図である。
【図３】本実施形態のガーベージ・コレクションにおける処理の流れを示すフローチャートである。
【図４】図１の状態のメモリに対して従来の方法でガーベージ・コレクションが行われた様子を示す図である。
【図５】本実施形態が適用されるコンピュータのハードウェア構成例を示す図である。
【図６】本実施形態が適用されるシステムの機能構成例を示す図である。
【符号の説明】
【００３４】
１０ａ…ＣＰＵ、６１…ガーベージ・コレクション実行部、６２…終了処理実行部、１００…メモリ、１１０…ルートセット、１２０…ヒープ、１３０…終了処理用キュー
【図１】
2009266113.tif 000003
【図２】
2009266113.tif 000004
【図３】
2009266113.tif 000005
【図４】
2009266113.tif 000006
【図５】
2009266113.tif 000007
【図６】
2009266113.tif 000008