(57)【要約】【課題】  ジャバ環境において資源を管理する装置および方法に関し、現在実行中であるプログラムからの接近可能性により分類された複数の参照オブジェクトと終了化可能なオブジェクトとの終了状態を確認することにあたって、参照オブジェクトを介して接近可能なオブジェクトに割当てられた資源が円滑に運用され得るように各オブジェクトの終了要否の確認順序を変更するジャバ環境において資源を管理する装置および方法を提供する。【解決手段】  ジャバ環境において資源を管理する装置は、メモリ資源が割当てられたオブジェクトを、ルートセットを介して接近可能であるかを確認する接近可能性確認部と、前記確認の結果により前記オブジェクトへの接近経路を確認する接近経路確認部と、前記接近経路の順序を決定する制御部と、前記順序によるオブジェクトに割当てられた前記メモリ資源の解除を行う資源解除部とを含む。【選択図】  図３
2007226808.tif 000002
【特許請求の範囲】
【請求項１】
メモリ資源が割当てられたオブジェクトを、ルートセットを介して接近可能であるかを確認する接近可能性確認部と、
前記確認の結果により前記オブジェクトへの接近経路を確認する接近経路確認部と、
前記接近経路の順序を決定する制御部と、
前記順序によるオブジェクトに割当てられた前記メモリ資源の解除を行う資源解除部とを含むジャバ環境において資源を管理する装置。
【請求項２】
前記ルートセットは、参照によって接近可能なすべてのオブジェクトの集合を含む請求項１に記載のジャバ環境において資源を管理する装置。
【請求項３】
前記接近経路は、参照クラスを継承するクラスのインスタンスである参照オブジェクト、または終了化可能なオブジェクトを介して前記オブジェクトに接近する経路を含む請求項１に記載のジャバ環境において資源を管理する装置。
【請求項４】
前記参照オブジェクトは、ソフト参照オブジェクト、弱参照オブジェクト、およびファントム参照オブジェクトのうち少なくとも１つを含む請求項３に記載のジャバ環境において資源を管理する装置。
【請求項５】
前記接近経路の順序は、前記終了化可能なオブジェクトを介する接近経路が前記参照オブジェクトを介する接近経路に優先する順序を含む請求項３に記載のジャバ環境において資源を管理する装置。
【請求項６】
前記資源解除部は、前記参照オブジェクトを介して接近可能なオブジェクトをＮＵＬＬに設定して前記解除を行う請求項３に記載のジャバ環境において資源を管理する装置。
【請求項７】
前記資源解除部は、前記終了化可能なオブジェクトを介して接近可能なオブジェクトに割当てられたメモリ領域に対する使用権限を運営体系に返還して前記解除を行う請求項３に記載のジャバ環境において資源を管理する装置。
【請求項８】
メモリ資源が割当てられたオブジェクトを、ルートセットを介して接近可能であるかを確認するステップと、
前記確認の結果により前記オブジェクトへの接近経路を確認するステップと、
前記接近経路の順序を決定するステップと、
前記順序によるオブジェクトに割当てられた前記メモリ資源の解除を行うステップとを含むジャバ環境において資源を管理する方法。
【請求項９】
前記ルートセットは、参照によって接近可能なすべてのオブジェクトの集合を含む請求項８に記載のジャバ環境において資源を管理する方法。
【請求項１０】
前記接近経路は、参照クラスを継承するクラスのインスタンスである参照オブジェクト、または終了化可能なオブジェクトを介して前記オブジェクトに接近する経路を含む請求項８に記載のジャバ環境において資源を管理する方法。
【請求項１１】
前記参照オブジェクトは、ソフト参照オブジェクト、弱参照オブジェクト、およびファントム参照オブジェクトのうち少なくとも１つを含む請求項１０に記載のジャバ環境において資源を管理する方法。
【請求項１２】
前記接近経路の順序は、前記終了化可能なオブジェクトを介する接近経路が前記参照オブジェクトを介する接近経路に優先する順序を含む請求項１０に記載のジャバ環境において資源を管理する方法。
【請求項１３】
前記解除を行うステップは、前記参照オブジェクトを介して接近可能なオブジェクトをＮＵＬＬに設定するステップを含む請求項１０に記載のジャバ環境において資源を管理する方法。
【請求項１４】
前記解除を行うステップは、前記終了化可能なオブジェクトを介して接近可能なオブジェクトに割当てられたメモリ領域に対する使用権限を運営体系に返還するステップを含む請求項１０に記載のジャバ環境において資源を管理する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ジャバ環境において資源を管理する装置および方法に関し、より詳しくは、現在実行中であるプログラムからの接近可能性（ａｃｃｅｓｓｉｂｉｌｉｔｙ）より分類された複数の参照オブジェクトと終了化可能なオブジェクト（Ｆｉｎａｌｉｚａｂｌｅ  Ｏｂｊｅｃｔ）との終了状態を確認することにあたって、参照オブジェクトを介して接近可能なオブジェクトに割当てられた資源が円滑に運用され得るように、各オブジェクトの終了要否の確認順序を変更するジャバ環境において資源を管理する装置および方法に関するものである。
【背景技術】
【０００２】
ジャバは、作成されたコードをプラットフォーム独立して行うオブジェクト指向のプログラミング言語である。ここで、プラットフォームは、プログラムが実行されるハードウェアまたは運営体系のようなソフトウェア環境をいう。ジャバで作成されたコードは、ジャバコンパイラによってジャババイトコードにコンパイルされ、ジャババイトコードは多様なハードウェア基盤のプラットフォームにポーティングされたジャバ仮想マシーンにより実行される。
【０００３】
図１は、従来のジャバ仮想マシーンを示す図面であって、ジャバ仮想マシーン１０はインタープリタ１１、ガーベッジコレクタ１２、クラスローダ１３、およびランタイムシステム１４を含んで構成される。
【０００４】
クラスに対するインスタンスをオブジェクトというが、１つのオブジェクトが生成されれば、メモリのヒープ（ｈｅａｐ）領域のうち一部が生成されたオブジェクトのために割当てられる。そして、オブジェクトが消滅すれば、ガーベッジコレクタ１２は該当メモリ領域の資源割当を解除することによって、他のプログラムまたはオブジェクトを自由に用いることができるようにする。
【０００５】
資源割当を解除することにあたって、ガーベッジコレクタ１２はヒープ領域のメモリ資源を割当てられたすべてのオブジェクトの終了要否を確認した後に、終了したすべてのオブジェクトに割当てられた資源を解除する。ここで、ガーベッジコレクタ１２は該当オブジェクトの終了要否を確認するために、現在実行中であるプログラムからの接近可能要否を確認する。すなわち、ガーベッジコレクタ１２は、スレッドのルートセットを介して接近可能な（ａｃｃｅｓｓｉｂｌｅ）オブジェクトは終了しなかったと判断し、ルートセットを介して接近不可能な（ｉｎａｃｃｅｓｓｉｂｌｅ）オブジェクトは終了したと判断する。
【０００６】
一方、参照クラス（Ｒｅｆｅｒｅｎｃｅ  Ｃｌａｓｓ）を継承するクラスのインスタンス（以下、参照オブジェクトという）を介してルートセットから接近可能なオブジェクトがあるが、このようなオブジェクトはルートセットから接近不可能なオブジェクトに分類され、該当メモリ領域に対する資源割当がガーベッジコレクタ１２によって解除される。
【０００７】
ここで、参照オブジェクトは、ソフト参照オブジェクト、弱参照オブジェクト（Ｗｅａｋ  Ｒｅｆｅｒｅｎｃｅ  Ｏｂｊｅｃｔ）、およびファントム参照オブジェクト（Ｐｈａｎｔｏｍ  Ｒｅｆｅｒｅｎｃｅ  Ｏｂｊｅｃｔ）に分類することができるが、オブジェクトへの接近種類はルートセットからの接近方式により４種類に分類される。すなわち、参照オブジェクトを除いた残りオブジェクトからの接近、ソフト参照オブジェクトからの接近、弱参照オブジェクトからの接近、およびファントム参照オブジェクトからの接近がそのものである。
【０００８】
図２は、従来のオブジェクトが終了することに伴った状態を示す図面であって、状態は、終了化可能状態２１、終了中（Ｆｉｎａｌｉｚｉｎｇ）状態２２、終了完了状態２３、および返還完了（Ｒｅｔｕｒｎｅｄ）状態２４を含むが、このような状態変化が可能なオブジェクトを終了化可能なオブジェクトという。
【０００９】
終了可能状態２１はオブジェクトが生成されて実行中である状態を意味し、終了中状態２２は終了関数が行われることによってオブジェクトの終了が進行中である状態を意味し、終了完了状態２３は終了関数の実行が終了することによってガーベッジコレクタ１２によって該当オブジェクトに割当てられた資源が解除され得る状態を意味し、そして、返還完了状態２４は該当オブジェクトに割当てられた資源がメモリ領域から解除された状態を意味する。
【００１０】
ガーベッジコレクタ１２は、ヒープ領域のメモリ資源を割当てられたオブジェクトの終了要否を確認するために、オブジェクトの活性要否（ａｃｔｉｖｅ）を示すビット（以下、活性ビットという）をすべてｆａｌｓｅに設定した後、ルートセットから接近可能なすべてのオブジェクトに対する確認を始める。そして、確認対象のオブジェクトがルートセットから接近可能であれば、ガーベッジコレクタ１２はそのオブジェクトの活性ビットをｔｒｕｅに設定して資源解除の対象から除去する。
【００１１】
ジャバ仮想マシーンの実現要否によって、各参照オブジェクトのためのキュー（ｑｕｅｕｅ）が存在することができるが、ガーベッジコレクタ１２は確認対象であるオブジェクトが参照オブジェクトを介して接近可能な場合、該当オブジェクトのアドレスを参照オブジェクトの種類に対応するキューに入力する。この時、参照オブジェクトを介して接近可能なオブジェクトは強く接近可能なオブジェクトではないため、その活性ビットはｆａｌｓｅに保持される。
【００１２】
オブジェクトの終了要否の確認が完了すれば、ガーベッジコレクタ１２は強く接近可能ではないオブジェクトのアドレスを終了化可能なオブジェクトのキュー（Ｆｉｎａｌｉｚａｂｌｅ  Ｑｕｅｕｅ）に入力する。
【００１３】
そして、ガーベッジコレクタ１２は、ソフト参照オブジェクトのキュー、弱参照オブジェクトのキュー、終了化可能なオブジェクトのキュー、およびファントム参照オブジェクトのキューの順に収集されたアドレスに該当するオブジェクトに対する資源解除作業を行う。すなわち、ガーベッジコレクタ１２は、ソフト参照オブジェクトのキュー、弱参照オブジェクトのキュー、およびファントム参照オブジェクトのキューに入力されたアドレスを抽出した後に各アドレスに該当するオブジェクトをＮＵＬＬに設定し、終了化可能なオブジェクトのキューに入力されたアドレスに該当するオブジェクトとそのオブジェクトから接近可能なすべてのオブジェクトの活性ビットをｔｒｕｅに設定する。これは終了関数によって終了するオブジェクト、すなわち、終了化可能なオブジェクトおよび終了化可能なオブジェクトによって接近可能なオブジェクトが活性状態でなければならないためである。
【００１４】
一方、あるオブジェクトが強く接近可能なオブジェクトであると同時に、参照オブジェクトを介して接近可能なオブジェクト（以下、共同オブジェクトという）である場合、ガーベッジコレクタ１２はソフト参照オブジェクトのキューおよび弱参照オブジェクトのキューから抽出されたアドレスに該当する共同オブジェクトをＮＵＬＬに設定し、終了化可能なオブジェクトのキューから抽出されたアドレスの共同オブジェクトの活性ビットをｔｒｕｅに設定する。すなわち、同一の１つのオブジェクト（共同オブジェクト）がＮＵＬＬに設定された以後、再びその活性ビットがｔｒｕｅに設定され、そのオブジェクトのために割当てられたメモリ資源が相変らずヒープ領域に存在することで、これはオブジェクトの状態が終了完了状態２３であるまで保持される。これに伴い、参照オブジェクトを介して接近することができないメモリ資源がヒープ領域に存在するようになり、これに伴い、資源の浪費が発生するようになる。
【００１５】
特許文献１は、実際オブジェクトヒープと実際オブジェクトヒープより大きい仮想オブジェクトヒープとを形成して、ジャバアプリケーションのオブジェクトは仮想オブジェクトヒープに割当て、ガーベッジコレクションを仮想オブジェクトヒープで実行する方法を開示している。
【００１６】
しかし、これは単にヒープ領域を仮想に拡張して運用したものであり、参照オブジェクトを介して接近することができないメモリ資源が発生しないようにする方法に対しては開示していない。
【００１７】
したがって、ガーベッジコレクタ１２による資源解除過程によって解除はしないが、接近が不可能なメモリ資源の発生を防止する発明の登場が要求される。
【特許文献１】米国特許第６０７０１７３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１８】
本発明は、現在実行中であるプログラムからの接近可能性により分類された複数の参照オブジェクトと終了化可能なオブジェクトとの終了状態を確認する順序を変更することによって、参照オブジェクトおよび終了化可能なオブジェクトを介して接近可能なオブジェクトに接近が容易なようにすることにその目的がある。
【００１９】
本発明の目的は、以上で言及した目的に制限されず、言及していないまた他の目的は下記記載によって当業者が明確に理解できるものである。
【課題を解決するための手段】
【００２０】
前記目的を達成するために、本発明の一態様に係わるジャバ環境において資源を管理する装置は、メモリ資源が割当てられたオブジェクトを、ルートセットを介して接近可能であるかを確認する接近可能性確認部と、前記確認の結果により前記オブジェクトへの接近経路を確認する接近経路確認部と、前記接近経路の順序を決定する制御部と、および前記順序によるオブジェクトに割当てられた前記メモリ資源の解除を行う資源解除部とを含む。
【００２１】
本発明の他の態様に係わるジャバ環境において資源を管理する方法は、メモリ資源が割当てられたオブジェクトを、ルートセットを介して接近可能であるかを確認するステップと、前記確認の結果により前記オブジェクトへの接近経路を確認するステップと、前記接近経路の順序を決定するステップと、および前記順序によるオブジェクトに割当てられた前記メモリ資源の解除を行うステップとを含む。
【発明の効果】
【００２２】
本発明のジャバ環境において資源を管理する装置および方法によれば、次のような効果が１つあるいはそれ以上ある。
【００２３】
第１に、参照オブジェクトと終了化可能なオブジェクトとの終了状態を確認する順序を変更して、参照オブジェクトおよび終了化可能なオブジェクトを介して接近可能なオブジェクトに接近が容易なようにすることによってメモリ資源の浪費を減少させることができる利点がある。
【００２４】
第２に、参照オブジェクトおよび終了化可能なオブジェクトを介して接近可能なオブジェクトに接近が容易なようにすることによって、該当メモリ資源への接近不能による誤動作を減少させることができる利点もある。
【発明を実施するための最良の形態】
【００２５】
その他、実施形態の具体的な事項は詳細な説明および図面に含まれている。
本発明の利点および特徴、そしてそれらを達成する方法は、添付する図面と共に詳細に後述する実施形態を参照すれば明確になる。しかし、本発明は以下にて開示する実施形態に限定されず、互いに異なる多様な形態によって実施され、単に本実施形態は本発明の開示が完全なものとなるようにし、本発明が属する技術分野で通常の知識を有する者に発明の範疇を完全に知らせるために提供されるものであって、本発明は請求項の範疇によってのみ定義されるものである。明細書の全体に亘り、同一参照符号は同一構成要素を示す。
【００２６】
以下、添付した図面を参照して、本発明の好ましい実施形態を詳細に説明する。
【００２７】
図３は、本発明の実施形態に係わるジャバ環境において資源を管理する装置を示すブロック図であって、ジャバ環境において資源を管理する装置（以下、資源管理装置という）３００は、第１のメモリ３１０、第２のメモリ３２０、接近可能性確認部３３０、資源情報更新部３４０、制御部３５０、資源解除部３６０、および接近経路確認部３７０を含んで構成される。
【００２８】
以下、資源管理装置３００の動作は、ジャバプログラムによって実現されることを仮定しているが、これは例示的なものに過ぎなく、その他のプログラムによって実現することができるに留意しなければならない。
【００２９】
第１のメモリ３１０は、生成されたオブジェクトのために割当てられたメモリ資源を提供する役割をする。第１のメモリ３１０のメモリ領域は、コード領域、データ領域、ヒープ領域、およびスタック領域を含んで構成される。
【００３０】
コード領域は、コードそのものを構成するメモリ領域であって、応用プログラムの命令が位置する領域であり、機械語で制御されるメモリ領域である。
【００３１】
データ領域にはデータが保管される。例えば、グローバル変数、静的変数、およびその他の初期化された各種配列と構造資料が格納される。
【００３２】
ヒープ領域は、プログラマーが自ら割当てたメモリ領域を意味する。例えば、メモリ割当のための関数などを用いて配分されたメモリがヒープ領域に該当するが、オブジェクトが生成されれば第１のメモリ３１０のメモリ領域のうちヒープ領域がオブジェクトのために割当てられる。
【００３３】
スタック領域は、応用プルグラムが自動で用いる臨時メモリ領域に該当する。すなわち、自動変数を格納するか、関数として因数を送る時、復帰アドレスを格納する時、などに用いられる。
【００３４】
１つのオブジェクトのために割当てられたメモリ領域には、オブジェクトの活性要否を示すビット（以下、活性ビットという）が含まれることもできる。活性ビットはオブジェクトの活性要否によりｔｒｕｅまたはｆａｌｓｅの値を有することができる。すなわち、オブジェクトが活性状態であれば活性ビットはｔｒｕｅの値を有し、オブジェクトが非活性状態であれば活性ビットはｆａｌｓｅの値を有するが、ｔｒｕｅの値を有するオブジェクトは資源解除対象から除外され、ｆａｌｓｅの値を有するオブジェクトに対してのみ資源解除が行われる。
【００３５】
第２のメモリ３２０は、オブジェクトのアドレスを格納する役割をする。資源管理装置３００の動作がジャバプログラムによって実現される時、オブジェクトは終了化可能なオブジェクトを介して接近可能なオブジェクト（以下、第１のオブジェクトという）および参照オブジェクトを介して接近可能なオブジェクト（以下、第２のオブジェクトという）を含む。
【００３６】
ここで、参照オブジェクトは、参照クラスを継承するクラスのインスタンスであって、特定オブジェクトへの接近方式により、ソフト参照オブジェクト、弱参照オブジェクト、およびファントム参照オブジェクトに分類される。
【００３７】
一方、第１のオブジェクトとは、参照オブジェクト以外のオブジェクトを介して接近可能なオブジェクトであって、終了関数の実行によりルートセットから強く接近可能ではないオブジェクトを意味する。
【００３８】
ジャバ仮想マシーンの実現要否により各参照オブジェクトおよび終了化可能なオブジェクトのためのキューが存在することができるが、第２のメモリ３２０にこのようなキューが位置して、第１のオブジェクトおよび第２のオブジェクトのアドレスが格納され得るようになる。
【００３９】
一方、図３で第１のメモリ３１０および第２のメモリ３２０が別途に備えられたことを示しているが、これは１つの例示的なものに過ぎなく、１つの格納手段が第１のメモリ３１０および第２のメモリ３２０の役割を行うことができるだけでなく、各メモリに格納されるデータの全体または一部がネットワークを介して連結された別途の格納装置を介して管理されることもできる。
【００４０】
接近可能性確認部３３０は、メモリ資源が割当てられたオブジェクトを、ルートセットを介して接近可能であるかを確認する役割をする。ここで、ルートセットは参照によって接近可能なすべてのオブジェクトの集合を含む。
【００４１】
第１のメモリ３１０のヒープ領域には、オブジェクトのために割当てられたメモリ領域が存在するが、接近可能性確認部３３０はこのようなオブジェクトがルートセットを介して接近可能であるかを確認する。
【００４２】
資源情報更新部３４０は、第１のメモリ３１０に格納された活性ビットおよび第２のメモリ３２０に格納されたキューを更新する役割を行う。このために、資源情報更新部３４０は、活性ビット更新部３４１およびキュー更新部３４２を含むことができるが、接近可能性確認部３３０によるオブジェクトの接近可能性確認作業が始まれば、活性ビット更新部３４１は第１のメモリ３１０に格納された活性ビットをすべてｆａｌｓｅに設定する。そして、活性ビット更新部３４１は、接近可能性確認部３３０によって確認されたオブジェクトがルートセットから接近可能であればｔｒｕｅに再設定し、ルートセットから接近可能でなければｆａｌｓｅを保持する。
【００４３】
キュー更新部３４２は、該当オブジェクトが参照オブジェクトを介して接近可能な場合、該当オブジェクトのアドレスを参照オブジェクトの種類に対応するキューに入力し、ルートセットから強く接近可能でないオブジェクトのアドレスを終了化可能なオブジェクトのキューに入力する。
【００４４】
接近経路確認部３７０は、接近可能性確認部３３０の確認の結果によりオブジェクトへの接近経路を確認する役割をする。すなわち、オブジェクトへの接近が可能であると確認されれば、接近経路確認部３７０は該当オブジェクトへの接近経路を確認する。
【００４５】
ここで、接近経路は、参照クラスを継承するクラスのインスタンスである参照オブジェクトまたは終了化可能なオブジェクトを介して該当オブジェクトに接近する経路を含む。換言すれば、接近経路には、ソフト参照オブジェクト、弱参照オブジェクト、ファントム参照オブジェクト、および終了化可能なオブジェクトを介する経路が含まれる。
【００４６】
制御部３５０は接近経路の順序を決定する役割をする。ここで、制御部３５０は、接近経路の順序として、終了化可能なオブジェクトを介する接近経路が参照オブジェクトを介する接近経路に優先するようにその順序を決めることができる。例えば、終了化可能なオブジェクト、ソフト参照オブジェクト、弱参照オブジェクト、およびファントム参照オブジェクトの順で制御部３５０は接近経路の順序を決定することができるが、これに伴い、同一の１つのオブジェクトが参照オブジェクトおよび終了化可能なオブジェクトを介して接近可能な場合、第２のオブジェクトの資源解除過程以後に第１のオブジェクトの資源解除過程を行うことによって発生し得る該当資源に対する割当がメモリ上に存在することを防止することができるようになる。
【００４７】
すなわち、従来の方法によれば、第２のオブジェクトの資源解除のための過程で第２のオブジェクトがＮＵＬＬに設定され、第１のオブジェクトの資源解除のための過程で終了関数の実行により第１のオブジェクトの活性ビットがｔｒｕｅに設定されるが、第１のオブジェクトと第２のオブジェクトとが同一であるため、結局、参照オブジェクトからの接近は不可能であるが、相変らずヒープ領域の一部が該当オブジェクトのために割当てられた状態が保持される。
【００４８】
一方、制御部３５０による順序によれば、第１のオブジェクトの資源解除のための過程で終了関数の実行により第１のオブジェクトの活性ビットがｔｒｕｅに設定され、終了関数の作業が完了することによって第１のオブジェクトに割当てられた資源が解除される。そして、第２のオブジェクトの資源解除のための過程で第２のオブジェクトがＮＵＬＬに設定されるため、従来のような問題点は発生しなくなる。
【００４９】
第１のメモリ３１０の資源が割当てられたオブジェクトの接近可能性をすべて確認すれば、制御部３５０は第２のメモリ３２０から参照オブジェクトのキューおよび終了化可能なオブジェクトのキューに入力されたアドレスを抽出して、資源解除部３６０に伝達する。
【００５０】
これに伴い、資源解除部３６０は、伝達されたアドレスに該当するオブジェクトに割当てられたメモリ資源を解除する。すなわち、資源解除部３６０は、第２のオブジェクトをＮＵＬＬに設定して資源解除を行ったり、第１のオブジェクトに割当てられたメモリ領域に対する使用権限を運営体系に返還したりして、資源解除を行うことができる。
【００５１】
第２のオブジェクトの資源解除のための過程が第１のオブジェクトの資源解除のための過程より優先する場合、従来の問題点のように、メモリ資源の浪費が発生することができるが、資源解除部３６０は制御部３５０によって決定された順序、すなわち、第１のオブジェクトの資源解除を第２のオブジェクトの資源解除に優先して行うため、メモリ資源の浪費が発生しなくなる。
【００５２】
図４は、本発明の実施形態に係わるキューを示す図面であって、第１のメモリ３１０に格納されたオブジェクトのメモリ領域と第２のメモリ３２０に格納されたキュー４１０，４２０，４３０，４４０を示している。
【００５３】
キューは、データが入った順に除去される、すなわち、先入先出（ＦＩＦＯ、Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）によってデータが処理される資料構造を意味する。
【００５４】
接近可能性確認部３３０によって確認されたオブジェクト４００がルートセットから強く接近可能でない場合、すなわち、終了化可能なオブジェクトを介して接近可能であったり、参照オブジェクトを介して接近可能であったりする場合、接近可能性確認部３３０は該当オブジェクト４００のアドレスをキュー更新部３４２に伝達し、キュー更新部３４２は第２のメモリ３２０に備えられたキュー４１０，４２０，４３０，４４０に該当オブジェクト４００のアドレスを入力する。
【００５５】
第２のメモリ３２０のキューは、オブジェクト４００への接近方式により４個４１０，４２０，４３０，４４０に分類することができる。すなわち、キューは、ソフト参照オブジェクトのキュー４１０、弱参照オブジェクトのキュー４２０、ファントム参照オブジェクトのキュー４３０、および終了化可能なオブジェクトのキュー４４０に分類することができる。
【００５６】
これに伴い、キュー更新部３４２は、接近方式に応じるキューに該当オブジェクト４００のアドレスを入力する。すなわち、該当オブジェクト４００がソフト参照オブジェクトを介して接近可能な場合、該当オブジェクトのアドレスをソフト参照オブジェクトのキュー４１０に入力し、該当オブジェクトが弱参照オブジェクトを介して接近可能な場合、該当オブジェクトのアドレスを弱参照オブジェクトのキュー４２０に入力し、該当オブジェクトがファントム参照オブジェクトを介して接近可能な場合、該当オブジェクトのアドレスをファントム参照オブジェクトのキュー４３０に入力し、そして、該当オブジェクトが終了化可能なオブジェクトを介して接近可能な場合、該当オブジェクトのアドレスを終了化可能なオブジェクトのキュー４４０に入力する。
【００５７】
キューに入力されたオブジェクトのアドレスは制御部３５０によって抽出されるが、制御部３５０はアドレスが入力されたキューの順序に関わらず、自身が決めた順序によってオブジェクト４００のアドレスを抽出することができる。例えば、ソフト参照オブジェクトのキュー４１０、弱参照オブジェクトのキュー４２０、終了化可能なオブジェクトのキュー４３０、およびファントム参照オブジェクトのキュー４４０の順でオブジェクト４００のアドレスが入力されたとしても、制御部３５０は終了化可能なオブジェクトのキュー４４０、ソフト参照オブジェクトのキュー４１０、弱参照オブジェクトのキュー４２０、およびファントム参照オブジェクトのキュー４３０の順でオブジェクト４００のアドレスを抽出することができる。
【００５８】
図５ａ〜図５ｄは、本発明の実施形態に係わる順序によって資源が解除されることを示す概念図であって、図５ａは終了化可能なオブジェクト５４０、ソフト参照オブジェクト５１０、弱参照オブジェクト５２０、およびファントム参照オブジェクト５３０を介して接近する１つのオブジェクト５００に、終了化可能なオブジェクト５４０を介して接近可能なオブジェクトの資源解除作業（以下、第１の資源解除という）が行われることを示す。
【００５９】
第１の資源解除が行われればオブジェクト５００が含む終了関数が行われ、終了関数が行われることによってオブジェクト５００の活性ビットはｔｒｕｅに設定される。すなわち、オブジェクト５００は、ルートセットから強く接近可能なオブジェクトになる。そして、オブジェクト５００の状態は、終了可能状態および終了中状態を経て終了完了状態になるが、終了完了状態になるにつれて活性ビットはｆａｌｓｅに設定され、オブジェクト５００のアドレスが終了化可能なオブジェクトのキュー４４０に入力される。
【００６０】
そして、終了化可能なオブジェクトのキュー４４０に入力されたオブジェクト５００のアドレスは、制御部３５０によって抽出されて資源解除部３６０に伝えられ、資源解除部３６０は該当アドレスのメモリ領域を運営体系に返還して資源を解除する。これに伴い、オブジェクト５００は、終了化可能なオブジェクト５４０からの接近が不可能になり、図５ｂに示すようにオブジェクト５００は、ソフト参照オブジェクト５１０、弱参照オブジェクト５２０、およびファントム参照オブジェクト５３０を介して接近可能になる。
【００６１】
図５ｂは、ソフト参照オブジェクト５１０を介して接近可能なオブジェクトの資源解除作業（以下、第２の資源解除という）が行われることを示す。
【００６２】
第２の資源解除が行われればオブジェクト５００の活性ビットはｆａｌｓｅに保持され、オブジェクト５００のアドレスがソフト参照オブジェクトのキュー４１０に入力される。前述した通り、接近可能性確認部３３０によるオブジェクトの接近可能性確認作業が始まれば、活性ビット更新部３４１は第２のメモリ３２０に格納された活性ビットをすべてｆａｌｓｅに設定するため、活性ビット更新部３４１は第２の資源解除が行われることによってオブジェクト５００の活性ビットを更新する必要がなくなる。
【００６３】
そして、ソフト参照オブジェクトのキュー４１０に入力されたオブジェクト５００のアドレスは制御部３５０によって抽出されて資源解除部３６０に伝えられ、資源解除部３６０はオブジェクト５００をＮＵＬＬに設定する。これに伴い、オブジェクト５００は、ソフト参照オブジェクト５１０からの接近が不可能になり、図５ｃに示すようにオブジェクト５００は、弱参照オブジェクト５２０およびファントム参照オブジェクト５３０を介して接近可能になる。
【００６４】
図５ｃは、弱参照オブジェクト５２０を介して接近可能なオブジェクトの資源解除作業（以下、第３の資源解除という）が行われることを示す。
【００６５】
第３の資源解除が行われればオブジェクト５００の活性ビットはｆａｌｓｅに保持され、オブジェクト５００のアドレスが弱参照オブジェクトのキュー４２０に入力される。
【００６６】
そして、弱参照オブジェクトのキュー４２０に入力されたオブジェクト５００のアドレスは、制御部３５０によって抽出されて資源解除部３６０に伝えられ、資源解除部３６０はオブジェクト５００をＮＵＬＬに設定する。これに伴い、オブジェクト５００は、弱参照オブジェクト５２０からの接近が不可能になり、図５ｄに示すようにオブジェクト５００はファントム参照オブジェクト５３０を介して接近可能になる。
【００６７】
図５ｄは、ファントム参照オブジェクト５３０を介して接近可能なオブジェクトの資源解除作業（以下、第４の資源解除という）が行われることを示す。
【００６８】
第４の資源解除が行われればオブジェクト５００の活性ビットはｆａｌｓｅに保持され、オブジェクト５００のアドレスがファントム参照オブジェクトのキュー４３０に入力される。
【００６９】
そして、ファントム参照オブジェクトのキュー４３０に入力されたオブジェクト５００のアドレスは、制御部３５０によって抽出されて資源解除部３６０に伝えられ、資源解除部３６０はオブジェクト５００をＮＵＬＬに設定する。これに伴い、オブジェクト５００は、ファントム参照オブジェクト５３０からの接近が不可能になり、結局、図５ｅのようにオブジェクト５００への接近経路がすべて消滅して、オブジェクト５００に割当てられたメモリ資源解除が完了する。
【００７０】
図６は、本発明の実施形態に係わるジャバ環境において資源を管理する過程を示すフローチャートである。
【００７１】
ジャバ環境において資源を管理するために資源情報更新部３４０の活性ビット更新部３４１は、まず第１のメモリ３１０に格納された活性ビットをすべてｆａｌｓｅに設定する（Ｓ６１０）。
【００７２】
そして、資源管理装置３００の接近可能性確認部３３０は、メモリ資源が割当てられたオブジェクトをルートセットを介して接近可能であるかを確認する（Ｓ６２０）。
【００７３】
確認されたオブジェクトの情報は資源情報更新部３４０に伝えられ、資源情報更新部３４０は第１のメモリ３１０に格納されたオブジェクトの活性ビットおよび第２のメモリ３２０に格納されたキューを更新する（Ｓ６３１，Ｓ６３２）。ここで、資源情報更新部３４０のキュー更新部３４２は、該当オブジェクトが参照オブジェクトを介して接近可能な場合、該当オブジェクトのアドレスを参照オブジェクトの種類に対応するキューに入力し、ルートセットから強く接近可能でないオブジェクトのアドレスを終了化可能なオブジェクトのキュー４４０に入力する。
【００７４】
そして、接近経路確認部３７０は、接近可能性確認部３３０の確認の結果によりオブジェクトへの接近経路を確認する（Ｓ６４０）。すなわち、オブジェクトへの接近が可能であると確認されれば、接近経路確認部３７０は該当オブジェクトへの接近経路を確認する。
【００７５】
ここで、接近経路は、ソフト参照オブジェクト、弱参照オブジェクト、ファントム参照オブジェクト、および終了化可能なオブジェクトを介して該当オブジェクトに接近する経路を含む。
【００７６】
そして、制御部３５０は、接近経路の順序を決定する（Ｓ６５０）。すなわち、割当てられたメモリ資源の解除のための順序として、接近経路の種類によってその順序を決定するが、この時、制御部３５０は終了化可能なオブジェクトを介する接近経路が参照オブジェクトを介する接近経路に優先するようにその順序を決めることができる。換言すれば、第１のオブジェクトの資源解除作業が第２のオブジェクトの資源解除作業に優先するように順序を決定することであり、例えば、終了化可能なオブジェクト、ソフト参照オブジェクト、弱参照オブジェクト、およびファントム参照オブジェクト順で接近経路の順序を決定することができる。ここで、制御部３５０によって決定される接近経路の順序は予めユーザによって入力されたものであることもできる。
【００７７】
そして、制御部３５０は、決定された順序によって第２のメモリ３２０に格納されたキューからオブジェクトのアドレスを抽出する（Ｓ６６０）。すなわち、終了化可能なオブジェクトのキュー４４０に格納されたオブジェクトのアドレスを先ず抽出し、ソフト参照オブジェクトのキュー４１０、弱参照オブジェクトのキュー４２０、およびファントム参照オブジェクトのキュー４３０の順でオブジェクトのアドレスを抽出する。
【００７８】
抽出されたアドレスは資源解除部３６０に伝えられ、資源解除部３６０は伝達された順序によってオブジェクトに割当てられたメモリ資源の解除を行う（Ｓ６７０）。すなわち、第１のオブジェクトに割当てられたメモリ領域に対する使用権限を運営体系に返還して資源解除を行った後に、第２のオブジェクトをＮＵＬＬに設定して資源解除を行う。資源解除に対する詳しい説明は図５ａ〜図５ｄを介して前述したため、省約することにする。
【００７９】
図３のブロック図の各ブロックと図６のフローチャートの各ステップとの組合せは、コンピュータプログラムインストラクションによって行われる可能性があることが理解できる。これらコンピュータプログラムインストラクションは、汎用コンピュータ、特殊用コンピュータ、またはその他のプログラム可能なデータプロセシング装備のプロセッサに搭載することができるため、コンピュータまたはその他のプログラム可能なデータプロセシング装備のプロセッサを介して行われるそのインストラクションがブロック図の各ブロックまたはフローチャートの各ステップで説明された機能を行う手段を生成するようになる。これらコンピュータプログラムインストラクションは、特定方式で機能を実現するために、コンピュータまたはその他のプログラム可能なデータプロセシング装備を指向することができるコンピュータ利用可能またはコンピュータ読取可能なメモリに格納することも可能であるため、そのコンピュータ利用可能またはコンピュータ読取可能なメモリに格納されたインストラクションは、ブロック図の各ブロックまたはフローチャートの各ステップで説明された機能を行うインストラクション手段を含む製造品目を生産することも可能である。コンピュータプログラムインストラクションは、コンピュータまたはその他のプログラム可能なデータプロセシング装備上に搭載することも可能であるため、コンピュータまたはその他のプログラム可能なデータプロセシング装備上で一連の動作ステップが行われ、コンピュータで実行されるプロセスを生成してコンピュータまたはその他のプログラム可能なデータプロセシング装備を行うインストラクションはブロック図の各ブロックおよびフローチャートの各ステップで説明された機能を実行するためのステップを提供することも可能である。
【００８０】
また、各ブロックまたは各ステップは、特定された論理的機能を実行するための１つ以上の実行可能なインストラクションを含むモジュール、セグメント、またはコードの一部を示すことができる。また、いくつかの代替実行例ではブロックまたはステップで言及した機能が順序を外れて発生することも可能であることを注目しなければならない。例えば、連続して図示されている２つのブロックまたはステップは実質的に同時に行われることも可能であり、またはそのブロックまたはステップが時々該当機能により逆順に行われることも可能である。
【００８１】
以上、添付した図面を参照して本発明の実施形態を説明したが、本発明が属する技術分野で通常の知識を有する者であれば、本発明がその技術的思想や必須の特徴を変更せず、他の具体的な形態によって実施することができるということを理解できる。したがって、以上で記述した実施形態はすべての面で例示的なものであり、限定的なものではないことを理解しなければならない。
【図面の簡単な説明】
【００８２】
【図１】従来のジャバ仮想マシーンを示す図である。
【図２】従来のオブジェクトが終了することによる状態を示す図である。
【図３】本発明の実施形態に係わるジャバ環境において資源を管理する装置を示すブロック図である。
【図４】本発明の実施形態に係わるキューを示す図である。
【図５ａ】本発明の実施形態に係わる順序によって資源が解除されることを示す概念図である。
【図５ｂ】本発明の実施形態に係わる順序によって資源が解除されることを示す概念図である。
【図５ｃ】本発明の実施形態に係わる順序によって資源が解除されることを示す概念図である。
【図５ｄ】本発明の実施形態に係わる順序によって資源が解除されることを示す概念図である。
【図５ｅ】本発明の実施形態に係わる順序によって資源が解除されることを示す概念図である。
【図６】本発明の実施形態に係わるジャバ環境において資源を管理する過程を示すフローチャートである。
【符号の説明】
【００８３】
３１０      第１のメモリ
３２０      第２のメモリ
３３０      接近可能性確認部
３４０      資源情報更新部
３５０      制御部
３６０      資源解除部
３７０      接近経路確認部
【図１】
2007226808.tif 000003
【図２】
2007226808.tif 000004
【図３】
2007226808.tif 000005
【図４】
2007226808.tif 000006
【図５ａ】
2007226808.tif 000007
【図５ｂ】
2007226808.tif 000008
【図５ｃ】
2007226808.tif 000009
【図５ｄ】
2007226808.tif 000010
【図５ｅ】
2007226808.tif 000011
【図６】
2007226808.tif 000012