(57)【特許請求の範囲】
【請求項１】
演算装置及びメモリを備え、所定の業務アプリケーションを実行する計算機であって、
生成したデータを格納する第１記憶領域と、前記第１記憶領域に格納されたデータの移動先となる１以上の第２記憶領域及び前記第１記憶領域並びに前記第２記憶領域に格納されたデータの移動先とならない１以上の第３記憶領域からなる閉塞領域とに少なくとも分けて前記メモリを管理するメモリ管理手段と、
第１記憶領域内のデータに関係性を有するデータを前記第２記憶領域に移動するデータ移動手段と、
データが移動された前記第２記憶領域を前記第３記憶領域に変更する領域変更手段と、
前記第３記憶領域に格納されたデータに対する更新を検出する更新検出手段と、
前記更新を検出したデータを前記第２記憶領域の閉塞待ち領域に移動する更新データ移動手段と、
前記データが移動された閉塞待ち領域及び前記第１記憶領域に格納されたデータを対象として前記メモリ上のデータの関係性を調査する調査手段と、
を有する計算機。
【請求項２】
前記領域変更手段が、格納データ量が所定の閾値を超えた場合に、前記第２記憶領域を前記第３記憶領域に変更する請求項１に記載の計算機
【請求項３】
前記更新検出手段が、前記閉塞領域に格納されたデータが更新された回数を前記閉塞領域毎に更に管理し、前記回数が所定の閾値以上となる前記第３記憶領域に格納されたデータのうち、前記第１記憶領域、前記第２記憶領域及び前記回数が所定の閾値以上となる前記第３記憶領域以外の前記第３記憶領域に格納されたデータから参照が存在するデータを生存データとして、閉塞領域に移動する
請求項１又は２に記載の計算機。
【請求項４】
前記回数が所定の閾値未満且つ最大である第３記憶領域を抽出する抽出手段を更に備え、
前記更新データ移動手段が、前記抽出手段が抽出した第３記憶領域に格納されたデータを当該第３記憶領域及び前記回数が所定の閾値以上である前記閉塞領域以外の閉塞領域に更に移動する請求項３に記載の計算機。
【請求項５】
前記更新データ移動手段が、前記第３記憶領域に格納されたデータの移動の際、前記閉塞領域内で当該データに関連性を有するデータを格納する閉塞領域内の領域に、当該データを移動する請求項１から４の何れか一項に記載の計算機。
【請求項６】
前記更新データ移動手段が、前記第３記憶領域からデータを移動する際、前記回数が最小である閉塞領域にデータを移動する請求項４に記載の計算機。
【請求項７】
前記更新データ移動手段が、前記第３記憶領域に格納されたデータを移動した後、当該第３記憶領域を解放する領域解放手段を更に有する請求項１から６の何れか一項に記載の計算機。
【請求項８】
前記データの関連性が、オブジェクトデータの参照関係である請求項１から７の何れか一項に記載の計算機。
【請求項９】
ネットワークを介して前記業務アプリケーションに対するクライアントからの要求及びその結果を送受信するインタフェースと、前記要求及び処理結果を管理する管理手段を更に有し、
前記管理手段は、前記要求及び結果から前記業務アプリケーションが提供する処理性能を監視し、前記処理性能に応じて、前記回数の閾値を変更させる請求項３、４、６の何れか一項に記載の計算機。
【請求項１０】
前記管理手段は、ユーザから前記クライアントが要求を送信してから前記処理結果を受信するまでの処理時間の閾値であるサービスレベルの入力を受付け、当該サービスレベルと、実処理の実測時間との差分時間に応じて、前記回数の閾値を変更させる請求項９に記載の計算機。
【請求項１１】
前記管理手段は、前記サービスレベル、前記実測時間及び現在の前記回数の閾値を少なくとも表示装置に表示させる請求項１０に記載の計算機。
【請求項１２】
演算装置及びメモリを備え、所定の業務アプリケーションを実行する計算機の管理方法であって、
前記計算機が、生成したデータを格納する第１記憶領域と、前記第１記憶領域に格納されたデータの移動先となる１以上の第２記憶領域及び前記第１記憶領域並びに前記第２記憶領域に格納されたデータの移動先とならない１以上の第３記憶領域からなる閉塞領域とに少なくとも分けて前記メモリを管理するメモリ管理ステップと、
前記計算機が、第１記憶領域内のデータに関係性を有するデータを前記第２記憶領域に移動するデータ移動ステップと、
前記計算機が、データが移動された前記第２記憶領域を前記第３記憶領域に変更する領域変更ステップと、
前記計算機が、前記第３記憶領域に格納されたデータに対する更新を検出する更新検出ステップと、
前記計算機が、前記更新を検出したデータを前記第３記憶領域以外の閉塞領域に移動する更新データ移動ステップと、
前記計算機が、前記データが移動された閉塞領域及び前記第１記憶領域に格納されたデータを対象として前記メモリ上のデータの関係性を調査する調査ステップと、
を含む管理方法。
【請求項１３】
前記領域変更ステップで、前記計算機が、格納データ量が所定の閾値を超えた場合に、前記第２記憶領域を前記第３記憶領域に変更する請求項１２に記載の管理方法
【請求項１４】
前記更新検出ステップで、前記計算機が、前記閉塞領域に格納されたデータが更新された回数を前記閉塞領域毎に更に管理し、
前記更新データ移動ステップで、前記計算機が、前記回数が所定の閾値以上となる前記第３記憶領域に格納された更新データを、前記第３記憶領域以外の閉塞領域に移動する請求項１２又は１３に記載の管理方法。
【請求項１５】
前記計算機が、前記回数が所定の閾値未満且つ最大である第３記憶領域を抽出する抽出ステップを更に含み、
前記更新データ移動ステップで、前記計算機が、前記抽出ステップで抽出した第３記憶領域に格納されたデータを、当該第３記憶領域及び前記回数が所定の閾値以上である前記閉塞領域以外の閉塞領域に更に移動する請求項１４に記載の管理方法。
【請求項１６】
前記更新データ移動ステップで、前記計算機が、前記第３記憶領域に格納されたデータを移動する際、前記閉塞領域内で当該データに関連性を有するデータを格納する閉塞領域内の領域に、当該データを移動する請求項１２から１５の何れか一項に記載の管理方法。
【請求項１７】
前記更新データ移動ステップで、前記計算機が、前記第３記憶領域からデータを移動する際、前記回数が最小である閉塞領域にデータを移動する請求項１４又は１５の管理方法。
【請求項１８】
前記更新データ移動ステップで、前記計算機が、前記第３記憶領域に格納されたデータを移動した後、当該第３記憶領域を解放する領域解放ステップを更に含む請求項１２から１７の何れか一項に記載の管理方法。
【請求項１９】
前記計算機は、ネットワークを介して前記業務アプリケーションに対するクライアントからの要求及びその結果を送受信するインタフェースと、前記要求及び処理結果を管理する管理部を更に有し、
前記管理部は、前記要求及び結果から前記業務アプリケーションが提供する処理性能を監視し、前記処理性能に応じて、前記回数の閾値を変更させるステップと、を更に含む請求項１４、１５、１７の何れか一項に記載の管理方法。
【請求項２０】
演算装置及びメモリを備える計算機に、
生成したデータを格納する第１記憶領域と、前記第１記憶領域に格納されたデータの移動先となる１以上の第２記憶領域及び前記第１記憶領域並びに前記第２記憶領域に格納されたデータの移動先とならない１以上の第３記憶領域からなる閉塞領域とに少なくとも分けて前記メモリを管理するメモリ管理ステップと、
第１記憶領域内のデータに関係性を有するデータを前記第２記憶領域に移動するデータ移動ステップと、
データが移動された前記第２記憶領域を前記第３記憶領域に変更する領域変更ステップと、
前記第３記憶領域に格納されたデータに対する更新を検出する更新検出ステップと、
前記更新を検出したデータを前記第３記憶領域以外の閉塞領域に移動する更新データ移動ステップと、
前記データが移動された閉塞領域及び前記第１記憶領域に格納されたデータを対象として前記メモリ上のデータの関係性を調査する調査ステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機、管理方法及びプログラムに係り、特に、データ間の関係性を調査する計算機、その調査の管理方法及びプログラムに関する。
【背景技術】
【０００２】
例えば、オブジェクトデータの参照関係のように、計算機がメモリ上に配置されたデータの関係性を調査する技術が知られている。
【０００３】
参照関係調査は、不要となったデータを格納するメモリ上の領域を回収する処理で必要となる。具体的には、まず計算機は、回収対象となるメモリ領域に存在するデータの参照関係を調査し、他のどのデータからも参照されないデータを不要データとし、不要データ以外を生存データと判断する。次に、生存データを、回収対象とするメモリ領域以外に移動し、その後、回収対象のメモリ領域を不要データごと解放し、そのメモリ領域を再利用できるようにする。
【０００４】
このデータ間の参照関係を調査する際、一般に、計算機の業務アプリケーション等は、それらのデータを利用する処理を停止するという技術方式が用いられる。データに対する処理の停止は、データ間の参照調査時にデータ間の参照関係がデータの生成や削除によって変化することを防ぐための一方式である。データの参照関係調査時には本方式が採用されることが多い。
【０００５】
このことは、逆に、参照関係を調査する時間が増大すると、データに対する処理の停止時間が増大し、任意の処理が遅延するという問題を示唆している。この処理の遅延を防ぐ方法として、種々の技術が知られている。
【０００６】
非特許文献１には、参照調査範囲を限定することで処理の停止時間を削減する技術が開示されている。この技術は、一度生成したデータについて削除以外の更新が発生しない言語、（例えば、関数型言語）を前提としたプログラムを利用するシステムに用いられる技術であって、まずデータを生成した順番で、旧世代のデータを格納する領域と、新世代のデータを格納する領域とにメモリ領域を分けるようになっている。そして、新世代のデータを格納する領域を対象とした不要領域の回収処理を優先的に実行することで、一定量の領域を回収するのに必要な不要データ回収処理の回数を低減するようになっている。その結果、この技術では、プリケーション等の処理の停止時間を削減するという効果をえることができるようになっている。
【０００７】
この技術が、新世代のデータを格納する領域を優先するのは、適用先のシステムにおけるデータ処理が特殊な場合を前提としているためである。即ちこの技術は、新しく生成されたデータは不要化しやすく、生成されてから時間が経つ古いデータは不要化せずにそのまま残る傾向があるデータ処理を行うシステムに適用する場合を前提としている。
【０００８】
つまり、関数型言語はデータが不変であるため、旧世代に属するデータを生成する際に存在しなかった新世代に属するデータへの参照は存在し得ないという理由による。よって、新世代に属するデータの参照元となるデータを全て取得するには、新世代へのデータ生成を一時停止する間に新世代のデータのみを調査すれば十分であるということになる。
【０００９】
また、非特許文献２には、旧世代のデータを世代別に更に分割するデータ管理技術が開示されている。ここでいう分割とは、メモリ領域を一定量に分割して複数の領域に分けることである。不要データを格納するメモリ領域の回収処理時には、分割した領域の１つのみを参照元調査の対象とする。これにより、旧世代の領域全てを回収処理対象にするのに比べ、参照元調査対象となるデータ量が減少する。その結果、１回の不要データ領域の回収処理におけるデータに対する処理の停止時間を短くすることができるという効果を奏する
【先行技術文献】
【非特許文献】
【００１０】
【非特許文献１】Todd A. Anderson, Optimizations in a Private Nursery-based Garbage Collector, In Proceedings of the 2010 international symposium on Memory management, pp.21-30, 2010
【非特許文献２】Richard L. Hudson, Incremental collection of mature objects, In Proceedings of the International Workshop on Memory Management, pp.388-403, 1992
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、非特許文献１の技術は、上述のように関数型言語を前提としていることから、旧世代のデータ生成時に存在しなかった新世代のデータを、その旧世代データが参照するような事象が発生しないという特定の環境下でのみ適用できるものである。データについて削除以外の更新（なお、ここでデータの削除とは、特定のデータから参照されない状態とすることをいう。即ち削除により新世代又は旧世代のデータに新しく参照元が追加されることはない。）が発生し、データの生成時に関係なく、旧世代のデータから新世代のデータを参照するような事象を発生させる言語を用いたシステムには適用することができない。このような旧世代のデータから新世代のデータを参照する言語を用いたシステムにおいて、旧世代に属するデータの参照元を調査するには、新世代と旧世代を含めた全領域を調査対象とする必要があり、参照調査範囲を新世代に属するデータに限定することができない。
【００１２】
また、非特許文献２に開示されるように、旧世代のデータを格納するメモリ領域を世代別に分割し、データの生成順に分割した領域を第１世代、第２世代、・・・第Ｎ世代とすれば、第Ｎ世代のデータの参照元は第Ｎ世代以降のデータに限定できることから、参照調査範囲を限定することができるとも言える。
【００１３】
しかしながら、非特許文献２であっても、第Ｎ世代よりも前の世代のデータに更新が発生した場合には、参照関係の調査対象が完全ではなく、（メモリの解放処理とともに）生存データを不用意に削除してしまうという課題が残る。即ち、一度生成したデータの更新が発生する言語に適用するには不十分であるといえる。
【００１４】
本発明は、データの更新が発生する言語又はシステムにおいて、参照関係等のデータ間の関係性調査等を効率的に行い、計算機の性能向上を図ることを主な目的とする。
【課題を解決するための手段】
【００１５】
上記課題を解決するために、本発明の一態様は、演算装置及びメモリを備え、所定の業務アプリケーションを実行する計算機であって、生成したデータを格納する第１記憶領域と、前記第１記憶領域に格納されたデータの移動先となる１以上の第２記憶領域及び前記第１記憶領域並びに前記第２記憶領域に格納されたデータの移動先とならない１以上の第３記憶領域からなる閉塞領域とに少なくとも分けて前記メモリを管理するメモリ管理手段と、第１記憶領域内のデータに関係性を有するデータを前記第２記憶領域に移動するデータ移動手段と、データが移動された前記第２記憶領域を前記第３記憶領域に変更する領域変更手段と、前記第３記憶領域に格納されたデータに対する更新を検出する更新検出手段と、前記更新を検出したデータを前記第３記憶領域以外の閉塞領域に移動する更新データ移動手段と、前記データが移動された閉塞領域及び前記第１記憶領域に格納されたデータを対象として前記メモリ上のデータの関係性を調査する調査手段と、を有する計算機である。
【発明の効果】
【００１６】
本発明によれば、データの更新が発生する言語において、種々のデータ管理に必要な参照調査等の関係性調査を効率的に行うことができ、計算機の性能向上を図ることができる。上述した以外の課題、構成および効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１７】
【図１】第１実施形態における計算機の構成を示すブロック図である。
【図２】第１実施形態における計算機の機能的構成を示すブロック図である。
【図３】第１実施形態における計算機の閉塞領域管理テーブルを示す模式図である。
【図４】第１実施形態における計算機のデータ登録処理の流れを示すフロー図である。
【図５】第１実施形態における計算機の閉塞待ち領域管理処理の流れを示すフロー図である。
【図６】第１実施形態における計算機の閉塞判定処理の流れを示すフロー図である。
【図７】第１実施形態における計算機の処理の流れを示すデータ更新処理のフロー図である。
【図８】第１実施形態における計算機で、データ移動等の状態を模式的に表す遷移図である。
【図９】第１実施形態における計算機で、データ移動等の状態を模式的に表す遷移図である。
【図１０】第２実施形態における計算機の機能的構成を示すブロック図である。
【図１１】第２実施形態における計算機の閉塞領域管理テーブルを示す模式図である。
【図１２】第２実施形態における計算機のデータ変化記憶処理の流れを示すフロー図である。
【図１３】第２実施形態における閉塞済み領域解放処理の流れを示すフロー図である。
【図１４】第２実施形態における閉塞済み領域解放処理で、データ移動等を状態を模式的に表す遷移図である。
【図１５】第３実施形態における計算機の機能的構成を示すブロック図である。
【図１６】第３実施形態における計算機の事前処理及び領域解放処理の流れを示すフロー図である。
【図１７】第４実施形態における計算機の参照先データの移動処理の流れを示すフロー図である。
【図１８】第５実施形態における計算機の構成を示すブロック図である。
【図１９】第５実施形態における計算機のサービスレベル管理装置上に表示される画面例を示す模式図である。
【図２０】第５実施形態における計算機のサービスレベル管理装置の処理の流れを示すフロー図である。
【発明を実施するための形態】
【００１８】
以下、図面を用いて本発明の実施形態を説明する。
〔第１実施形態〕
第１実施形態では、データの変更が発生する言語で作成されたプログラムで動作するシステムにおける参照調査の範囲を限定する計算機装置の例を説明する。
図１に、本発明を適用した第１実施形態である計算機の構成を示す。計算機は、ＣＰＵ１０と、メモリ１１と、ハードディスク等などの記憶装置１２と、通信装置１３と、入力装置１４と、表示装置１５とを備える一般的なコンピュータを用いて実現することができる。ＣＰＵ１０は、記憶装置１２に格納された各種のプログラム１２１やデータ１２２をメモリ１１に読み出し、これらとの協働により種々の処理を実行する各種機能部を実現する。メモリ１１は、読み出されたプログラム２０が展開され、プログラム２０とＣＰＵ１０との協働により、ユーザプログラム実行部（以下、「ＵＡＰ実行部」という。）３０、データ処理部４０、データ保持部５０、閉塞領域管理部６０及び不要領域回収部７０の各種機能部が構成される。記憶装置１２は、計算機１が実行する処理を実行するためのプログラム２０やデータ２１を格納する補助記憶として機能する。入力装置１４は、ユーザ操作に応じて、プログラム起動やデータ管理等の種々の指示を計算機１に入力するためのキーボードやマウス等である。表示装置１５は、計算機１による処理の実行状況や実行結果等を表示するディスプレイ等である。通信装置１３は、ＬＡＮ、ＷＡＮ又はインターネット等の有線又は無線の通信網を介して、外部の計算機装置等（不図示）と各種のデータやコマンドを通信するインタフェースである。
【００１９】
図２に、メモリ１１に構成された各機能部の詳細構成を示す。ＵＡＰ実行部３０は、データの生成、更新及び削除などのデータ処理を実現する１以上のＵＡＰ３１を実行する機能部である。各ＵＡＰ３１は、データ保持部５０の一時領域５１に保持するデータに対してデータ処理を実施する。また、各ＵＡＰ３１は、そのＵＡＰのその後の処理や他のＵＡＰ３１で利用するデータを、一時領域５１から閉塞領域５２に保持させるために、データ処理部４０の登録処理部４２に対し、該当するデータを登録するよう要求するようになっている。なお、本実施形態では、ＵＡＰ３１が登録処理部４２に対して登録を要求する例について説明するが、登録処理部４２が、不要化していない任意のデータを選択して登録するように構成してもよい。
【００２０】
データ処理部４０は、更新処理部４１及び登録処理部４２を有する。登録処理部４２は、ＵＡＰ３１から送信されたデータを登録すると供にそのデータをデータ保持部５０に保持させ、保持させたデータをＵＡＰ３１や他のＵＡＰ３１から再利用可能とさせる機能部である。更新処理部４１は、データ保持部５０に保持されているデータの更新や、後述する「データ更新処理（図７）」において、データ保持部５０内でデータの移動を行う機能部である。なお、本実施形態において、データの移動として複製を例に説明するが、複製後に移動元のデータを削除するようにしてもよい。
【００２１】
データ更新の検知は、更新処理部４１が更新処理を検知するプロキシオブジェクトをＵＡＰ３１に提供することで実現するようになっている。プロキシオブジェクトは、ＵＡＰ３１の処理対象であるデータを参照し、ＵＡＰ３１からデータ保持部５０に格納されているデータへの各種処理を受信する。プロキシオブジェクトがＵＡＰ３１からの更新処理の要求を受けた時、データの更新を更新処理部４１に通知するようになっている。なお、更新の検知はこれに限らず、種々の構成を適用することができる。例えば、後述する閉塞領域管理部６０が、閉塞領域を割り当てたメモリ領域に対しての書き込みを禁止し、書き込みが発生した場合に例外を発生させ、その例外を取得することで更新を検知するようにしてもよい。
【００２２】
また、データの複製処理は、プロキシオブジェクトがデータの更新処理を受けた際、その更新対象となるデータが閉塞済み領域５５に格納されている場合には、（その閉塞済み領域５５が解放対象領域であれば）、更新処理部４１がその更新対象データを閉塞待ち領域５３に複製するようになっている。その後、複製データに対し更新内容を反映するようになっている。
【００２３】
データ保持部５０は、データの格納領域を提供し、データを一時領域５１及び閉塞領域５２に分けて格納する機能部である。一時領域５１は、ＵＡＰ３１が使用するデータを一時的に保持する記憶領域である。本実施形態では、データ処理部４０を経てＵＡＰ実行部３０から送られたデータは、先ず一時領域５１に保持するようになっている。閉塞領域５２は、一時領域５１に保持されたデータを任意の契機で移動する移動先の記憶領域である。なお、閉塞領域５２は、データを保持する領域を任意のデータ量ごとに分割した領域の集合であり、各閉塞領域では有限のデータ量を保持することができるようになっている。
【００２４】
閉塞領域５２を構成する各閉塞領域は、更に、データ保持部５０によって、閉塞待ち領域５３及び閉塞済み領域５５の２種類に分けて管理されるようになっている。閉塞待ち領域５３は、登録処理部４２に登録されたデータについて、一時領域５１からのデータの移動先となる領域であり、新規なデータの追加記憶や更新されたデータの上書き等を行うことができる記憶領域である。閉塞済み領域５５は、一時領域５１や閉塞待ち領域５３に格納されたデータの移動先とならない領域であり、新規データの追加記憶や保持するデータに上書き等を行うことができない記憶領域である。閉塞待ち領域５３と、閉塞済み領域５５とは、閉塞待ち領域５３に保持されるデータが一定の量になると、閉塞済み領域５５として管理されるようになる関係にある。
【００２５】
閉塞領域管理部６０は、閉塞待ち領域５３と、閉塞済み領域５５とを管理する機能部であり、領域利用量取得部６１、領域追加部６２、閉塞判定部６３及び領域状態保持部６４を有する。領域利用量取得部６１は、閉塞待ち領域５３におけるメモリ使用量を取得する機能部である。領域追加部６２は、閉塞待ち領域５３を新しく閉塞領域５２に追加する機能部である。閉塞判定部６３は、閉塞待ち領域５３の利用量が所定の閾値以上であるか否かを判断する機能部である。閉塞判定部６３によって、利用量が閾値以上と判断された閉塞待ち領域５３は、その後、閉塞済み領域５５として管理されるようになっている。領域状態保持部６４は、閉塞判定部６３の判定結果を、後述する閉塞領域管理テーブル６９（図３参照）上で、各閉塞領域のＩＤ等と対応付けて記憶する機能部である。
【００２６】
不要領域回収部７０は、データ保持部５０に格納されたデータの参照関係を調査し、この調査により不要データを格納する領域と判断した領域を解放（回収）する機能部である。より詳細には、不要領域回収部７０は、参照関係の調査で、他のデータから参照されているデータを生存データ、他のデータから参照されていないデータを不要データと判断する。このうち生存データを、解放対象領域でなく且つその生存データの参照元が格納されている領域に移動させ、この不要データを格納する領域を解放（回収）するＧＣ（Ｇａｒｂａｇｅ  Ｃｏｌｌｅｃｔｉｏｎ）処理を実行する。即ち一時領域５１に存在する生存データを閉塞待ち領域５３に移動させ、一時領域５１の全部又は一部の領域を解放（回収）するようになっている。
【００２７】
図３に、閉塞領域管理テーブル６９を模式的に示す。閉塞領域管理テーブル６９は、領域ＩＤ８１、領域状態８３及び追加可否８５の各情報を対応付けて管理する。領域ＩＤは、閉塞領域５２に割り当てられた閉塞待ち領域５３及び閉塞済み領域５５を特定するＩＤである。領域状態８３は、閉塞領域５２に割り当てられている各領域が閉塞済みであるか、閉塞待ちであるかという状態を示す。追加可否８５は、閉塞待ち領域５３の利用量が所定の閾値以上であるか否かを示す情報であり、Ｆａｌｓｅの場合は、利用量が所定の閾値以上であり、これ以上のデータ格納を禁止することを意味し、Ｔｒｕｅの場合は、利用量が所定の閾値未満であり、更なるデータの格納が可能であることを意味する。
【００２８】
なお、本実施の形態では、閉塞領域の管理に関する情報を閉塞領域管理テーブル６９として、テーブルで管理する例を説明するが、これに限らずにリスト等で管理することもできる。
【００２９】
次に、各機能部の処理の流れについて、フロー図を用いて説明する。
図４に、登録処理部４２が実行する「データ登録処理」の流れを示す。
ここでの登録処理とは、ＵＡＰ実行部３０が実行するＵＡＰ３１がその実行過程で生成したデータをＵＡＰ３１に記載の命令または入力装置１４や通信装置１３を経由した命令により、登録処理部４２を介してデータ保持部５０に含まれる一時領域５１に登録する処理である。
【００３０】
Ｓ１００で、登録処理部４２は、データ登録要求が発生するまで待機する。登録処理部４２は、データ登録要求の発生を検出すると（Ｓ１００：Ｙｅｓ）、Ｓ１０２で、領域状態保持部６４から閉塞待ち領域５３の位置情報（アドレス８７）を取得し、登録要求のあったデータを、位置情報を取得した閉塞待ち領域５３に登録する。なお、ここでの登録とは位置情報に対応する閉塞待ち領域５３と、登録対象のデータとを関連付ける処理である。例えば、閉塞待ち領域５３内に存在するデータに登録対象のデータへの参照を書き込んでもよいし、登録対象のデータにＩＤを割り振り、そのＩＤを閉塞待ち領域に対応づけた表に書き込んでもよい。
【００３１】
図５に、閉塞領域管理部６０が実行する「閉塞待ち領域管理処理」の流れを示す。
まず、Ｓ２００で、領域追加部６２は、ＵＡＰ３１の実行等を契機として、データ保持部５０に閉塞待ち領域５３が存在するか否かを確認し、存在しない場合（Ｓ２００：Ｎｏ）、閉塞待ち領域５３を追加する処理を行う（Ｓ２０２）。閉塞待ち領域５３が存在する場合（Ｓ２００：Ｙｅｓ）、領域追加部６２はＳ２０８に進み、処理を領域利用量取得部６１に渡す。
【００３２】
Ｓ２０４で、領域追加部６２は、追加した領域が閉塞待ち領域であることを示す情報を領域状態保持部６４に通知する。
Ｓ２０６で、通知を受けた領域状態保持部６４は、追加された閉塞待ち領域５３を示すＩＤを領域ＩＤ８１に登録とすると供にその閉塞待ち領域５３の状態を領域状態８３に登録し、閉塞領域管理テーブル６９で関連付けて管理する。その後、処理を領域利用量取得部６１に渡す。
【００３３】
Ｓ２０８で、領域利用量取得部６１は、追加した閉塞待ち領域５３のデータ利用量を任意の契機若しくは定期的に取得し、領域追加部６２に通知する。なお、領域利用量取得部６１が取得するデータ利用量とは、データ数でもよいしデータサイズでもよい。
【００３４】
Ｓ２１０で、領域追加部６２は、取得した利用量が所定の閾値以上であるかを判定する。閾値未満の場合（Ｓ２１０：Ｎｏ）、領域追加部６２は、一定期間待機後、Ｓ２０８に処理を戻す。他方、利用量が所定の閾値以上である場合（Ｓ２１０：Ｙｅｓ）、Ｓ２１２で、領域追加部６２は、閉塞待ち領域５３にデータの追加登録が不可であることを示す情報を領域状態保持部６４に通知する。
【００３５】
Ｓ２１４で、領域状態保持部６４は、追加登録を不可とする情報を追加可否８５に登録し、閉塞領域管理テーブル６９上で領域ＩＤ８１と関連付けて管理する。追加可否８５は、例えば、追加可能である場合にはＴｒｕｅで、追加不可である場合にはＦａｌｓｅで表現する。
なお、追加可否８５は、データの移動が今後発生しないことが確定できれば不要であり、閉塞待ち領域５３を閉塞済み領域５５に状態を変更することで代用してもよい。
【００３６】
Ｓ２１６で、領域追加部６２は、ＵＡＰ３１が実行中であるかを確認し、実行中である場合（Ｓ２１６：Ｙｅｓ）Ｓ２００の処理に戻り、実行中でない場合（Ｓ２１６：Ｎｏ）処理を終了する。
【００３７】
さて、上述の「閉塞待ち領域管理処理」により、データの追加登録が不可となる閉塞待ち領域５３が発生することになる。このとき、閉塞判定部６３は、前記追加登録不可の閉塞待ち領域５３に対して「閉塞判定処理」を実施する。「閉塞判定処理」は、閉塞待ち領域５３に保持されているデータから一時領域５１にあるデータへのデータ参照が存在しない場合に、データの追加登録が不可となる閉塞待ち領域５３を、閉塞済み領域５５に変更する処理である。閉塞判定処理の実行タイミングは不要領域回収部７０がＧＣ処理を行ったときである。より詳細には、ＧＣ処理において、生存データの移動が発生した直後である。
【００３８】
図６に、「閉塞判定処理」の流れを示す。
Ｓ３００で、閉塞判定部６３は、不要領域回収部７０によって、一時領域５１と閉塞待ち領域５３を参照元調査の対象としてＧＣ処理を開始した後に、一時領域５１の生存データの移動が完了したことを検出する。
【００３９】
Ｓ３０２で、閉塞判定部６３は、領域状態保持部６４からデータの追加登録が不可（Ｆａｌｅｓ）となっている閉塞待ち領域５３の情報を取得する。
Ｓ３０４で、閉塞判定部６３は、Ｆａｌｓｅである閉塞待ち領域５３が存在するか否かを判断し、存在すれば（Ｓ３０４：Ｙｅｓ）、Ｓ３０６に進み、存在しなければ（Ｓ３０４：Ｎｏ）処理を終了する。
【００４０】
Ｓ３０６で、閉塞判定部６３は、Ｆａｌｓｅである閉塞待ち領域５３に存在するデータから一時領域５１に存在するデータへの参照が存在するか否かを確認する。この参照の確認は、直前に実施したＧＣ処理における参照調査結果を利用してもよい。
【００４１】
Ｓ３０８で、閉塞判定部６３は、閉塞待ち領域５３のデータから一時領域５１のデータへの参照が存在しなければ（Ｓ３０６：Ｎｏ）、閉塞判定部６３は、その閉塞待ち領域５３を閉塞済み領域５２に変更する指示を領域状態保持部６４に送信し、閉塞領域管理テーブル６９の領域状態８３を「閉塞済み」と登録させる。なお、閉塞待ち領域５３のデータから一時領域５１のデータへの参照が存在する場合（Ｓ３０６：Ｙｅｓ）、処理を終了する。
【００４２】
以上の処理により、閉塞済み領域内に存在するデータに対する更新が発生しなければ、閉塞済み領域５５から一時領域５１への参照が存在しないことが保証できる。
【００４３】
そこで、次に閉塞済み領域５５内に存在するデータに対し、データの更新が発生した場合に実行する「データ更新処理」について説明する。この処理により、閉塞済み領域５５から一時領域５１への参照が存在しないことを十分に保証することができるようになる。
【００４４】
図７に、更新処理部４１が実行する「データ更新処理」の流れを示す。
Ｓ４００で、更新処理部４１は、ＵＡＰ３１が実行するデータの更新処理を検知するまで待機する。この更新の検知は、上述したように、更新処理部４１によってＵＡＰ３１に提供されたプロキシオブジェクトが更新を更新処理部４１に通知することによって行われる。更新処理部４１が、更新を検知した場合（Ｓ４００：Ｙｅｓ）、Ｓ４０２に進む。
【００４５】
Ｓ４０２で、更新処理部４１は、更新対象のデータが閉塞済み領域５５に存在するか否かを確認する。閉塞済み領域にデータが存在する場合（Ｓ４０２：Ｙｅｓ）、Ｓ４０４の処理に進む。閉塞済み領域５５以外に更新対象のデータが存在する場合（Ｓ４０２：Ｎｏ）、Ｓ４０６の処理に進む。
Ｓ４０４で、更新処理部４１は、閉塞済み領域５５に存在する更新対象のデータを、閉塞待ち領域５３に複製し、複製先を更新の反映先として設定する。
Ｓ４０６で、更新処理部は、更新内容を反映先に反映する。
【００４６】
なお、Ｓ４０２の更新対象データの格納先領域を確認する処理では、プロキシオブジェクトに確認をさせることもできる。例えば、プロキシオブジェクトに、閉塞済み領域５５に存在するか否かを判定するフィールド値を持たせることで実現する。また、プロキシオブジェクトを利用しない場合は、更新対象のデータを参照するデータの参照先を複製先のデータに更新する。
【００４７】
プロキシオブジェクトを利用する場合、更新対象のデータを参照するデータはプロキシオブジェクトを介してデータの複製先を検知できる。プロキシオブジェクトを利用しない場合、更新対象のデータを参照するデータはデータの複製先を検知できない。そこで、更新対象のデータを参照するデータの参照先を複製先のデータに更新するために、例えば複製元のデータに更新済みか否かを判定するフィールド値と複製先情報を持たせる。これにより複製済みデータに参照を持つデータは任意の契機で、更新済みか否かを判定し、更新済みなら複製先情報を用いて複製先に参照先を更新できる。または、更新処理部が複製元と複製先情報を保持し、任意のデータの参照先を複製元から複製先に更新してもよい。
【００４８】
第１実施形態の説明の最後として、図５に示す「閉塞待ち領域管理処理」、図６に示す「閉塞判定処理」及び図７に示す「データ更新処理」について、主にデータ保持部５０で生ずるデータの遷移を、図８及び図９の模式図を用いて説明する。図８及び図９において、丸印はデータを表し、黒丸印は、特に参照の起点データとして表す。各データを結ぶ矢印は、データの参照を表す。データから矢印により参照されるデータ及び起点データは生存データ、これ以外の参照が無いデータは不要データであることを意味するものとする。
【００４９】
先ず、図８を用いて、図５の「閉塞待ち領域管理処理」及び図６の「閉塞判定処理」におけるデータ遷移について説明する。データと領域の関係は、最初、図中〔Ａ〕の状態にあるものとする。先ず、閉塞領域管理部６０が、閉塞待ち領域５３や閉塞待ち領域５３の利用量等を確認する（Ｓ２００、Ｓ２０８）。不足があれば、図中〔Ｂ〕に表すように、新規に閉塞待ち領域５３を追加する（Ｓ２０２）。
【００５０】
その後、不要領域回収部７０が、任意の契機でＧＣ処理を実行する。ＧＣ処理では、生存データを閉塞待ち領域５３へ移動する。この時、閉塞待ち領域５３のデータから参照されるデータは参照元と同じ閉塞待ち領域５３に移動させ、それ以外の生存データは起点データごと閉塞待ち領域５３に移動させる。その後、図中〔Ｃ〕に表すように、データの追加が不可で且つ一時領域５１への参照がない閉塞待ち領域５３を閉塞済み領域５５に変更する（Ｓ３０８）。
【００５１】
次に、図９を用いて図７の「データ更新処理」説明する。図９において、黒塗り四角はプロキシオブジェクトを表す。
データ更新処理では、更新処理部４１が、プロキシオブジェクトを利用してデータの更新を検知する。更新処理部４１は更新を検知すると、更新対象のデータを閉塞待ち領域５３に複製し、その後、参照先を変更する更新を反映する。
【００５２】
以上の処理により、データの変更が発生する言語において参照関係の変更が発生する領域を一時領域５１と、閉塞待ち領域５３とに限定できる。この限定により、実行に際して、ＵＡＰ３１を停止する必要がある参照調査対象データを一時領域５１と閉塞待ち領域５３に格納されたデータに限定することができる。
【００５３】
以上、第１実施形態について説明したが、この計算機１によれば、ＧＣ処理等における参照関係の調査範囲を限定することが可能となる。これにより参照関係の調査処理に起因する時間や負荷を低減することができ、ＵＡＰ３１の処理停止時間を短縮できるとともに計算機１の性能向上が期待できる。
【００５４】
特に、計算機１では、閉塞済み領域５５に格納されたデータに対する更新が発生しても、閉塞待ち領域５３にそのデータの複製を作成して更新を反映することから、閉塞済み領域５５を参照処理の調査範囲から除外したとしても、更新データの調査を取りこぼすことがないため、参照関係調査の精度を維持することができるという効果がある。
【００５５】
〔第２実施形態〕
第２実施形態は、更に、不要化したデータの数や量が多い閉塞済み領域を解放することを特徴の一つとする。各閉塞済み領域において、不要化したデータの数や量が多い閉塞済み領域を解放すれば、より多くのメモリ領域を再利用することができる。一般に、データが不要化するのは、そのデータの更新又は削除を契機として参照元が存在しなくなる時であるといえる。
【００５６】
上述した、第１実施形態の計算機では、閉塞済み領域に格納されたデータに更新があると、更新対象のデータを閉塞待ち領域に複製して更新を反映する方式となっている。よって、更新対象となった複製元データは不要化すると予測できる。また、データの削除では、特定のデータからの参照がなくなるので不要化すると予測できる。
【００５７】
ところで、データは複数のデータから参照される可能性もある。よって、第１実施形態の計算機において、データが更新又は削除されるからといって、直ぐに不要化するとは限らないことも考えられる。即ち更新又は削除されたデータの不要化を確認するには、全ての閉塞済み領域について、参照元が存在しないことを調査する必要があるが、この際の参照元調査では、ＵＡＰを停止する必要があるためデータ処理が遅延する可能性もある。
【００５８】
そこで、第２実施形態では、各閉塞領域のデータの更新や削除によるデータの状態変化をデータ変化数として記憶し、解放対象領域の選択に利用するようにする計算機の例について説明する。これにより、より多くのデータ領域が再利用可能と予測される閉塞済み領域（不要データがより多く存在すると予測できる閉塞済み領域）を解放対象として効率よく選択することができる。
以下に、図を用いて第２実施形態の計算機について説明する。なお、以下の説明において、第１実施形態の計算機と同一機能を有するものは同一符号を用いるものとし、詳細な説明を省略する。
【００５９】
図１０に、第２実施形態における計算機のメモリ１１に構成された各機能部の構成を示す。第２実施形態の計算機２００では、閉塞領域管理部６０において、解放対象領域判定部２６５と、領域解放部２６６とを更に有する。閉塞領域管理部６０の領域状態保持部２６４と、閉塞領域管理テーブル２６９とは、第１実施形態における領域状態保持部６４及び閉塞領域管理テーブル６９から更に機能構成が追加される。また、データ処理部４０の更新処理部４１は、変更管理部２４３を更に有する。以上が、第１実施形態の計算機１と主に異なる点である。
【００６０】
解放対象領域判定部２６５は、閉塞済み領域５５を解放対象とするか否かを判定する機能部である。より詳細には、解放対象領域判定部２６５は、後述する閉塞領域管理テーブル２６９に登録されたデータ変化数２８９に基づいて、格納したデータのうち変化したデータの数が多い閉塞済み領域５５を解放対象領域とする判定を行う「解放対象領域判定処理」を実行する。
【００６１】
領域解放部２６６は、解放対象領域判定部２６５によって解放対象と判断された閉塞済み領域５５に格納されたデータを参照先とする他の閉塞領域（他の閉塞済み領域５５、閉塞待ち領域５３及び一時領域５１を含む。）からの参照調査を行い、閉塞済み領域５５に格納された参照先データを、参照元データを格納する閉塞領域に移動させ、その後、解放対象である閉塞済み領域５５のメモリの割当てを解除（回収）する機能部である。
【００６２】
変更管理部２４３は、データに対する更新と削除を検知し、その変更回数を閉塞領域管理テーブル２６９に登録させる「データ変化記憶処理」を実行する機能部である。本実施形態では、第1の実施形態で例示したプロキシオブジェクトを変更管理部２４３として機能させるようになっている。変更管理部２４３が、データの更新又は削除を検知すると、その対象となったデータが所属する閉塞領域（閉塞待ち領域５３及び閉塞済み領域５５）を特定して領域状態保持部２６４に通知し、領域状態保持部２６４に対し、その閉塞領域の変更総数を閉塞領域管理テーブル２６９に登録させるようになっている。
【００６３】
領域状態保持部２６４は、変更管理部２４３が検知したデータの更新と削除の通知を受け、更新及び削除されたデータを格納する閉塞済み領域５５毎に、その変化の回数を閉塞領域管理テーブル２６９に登録する機能を更に有する。
【００６４】
図１１に、閉塞領域管理テーブル２６９を模式的に示す。図に示すように、閉塞領域管理テーブル２６９は、更にデータ変化数２８９の項目を有する。
【００６５】
以上の構成を有する第２実施形態の掲載において、図１２に「データ変化記憶処理」の流れを示す。
Ｓ５０１で、変更管理部２４３は、データの更新又は削除の検知を待つ。
Ｓ５０３で、変更管理部２４３は、データの更新又は削除を検知すると（Ｓ５０１：Ｙｅｓ）、更新又は削除対象となったデータを格納する閉塞領域（５３又は５５）を特定し、領域状態保持部２６４に通知する。
【００６６】
Ｓ５０５で、領域状態保持部２６４は、閉塞領域管理テーブル２６９の領域ＩＤ８１に対応する変化数２８９に閉塞領域の変更数を登録する。
【００６７】
図１３に、「データ変化記憶処理」によって登録した変化数を利用して実行する「閉塞済み領域解放処理」の流れを示す。
Ｓ６０１で、解放対象領域判定部２６５は、定期又は所定の契機で閉塞状態管理テーブル２６９を参照し、領域状態８３が「閉塞済み」である領域（閉塞済み領域５５）の変化数を取得する。
【００６８】
Ｓ６０３で、取得した変化数が所定の閾値以上の閉塞済み領域５５が存在するか否かを判定する。全て閾値未満なら（Ｓ６０３：Ｎｏ）、ステップＳ６０１に戻る。逆に、解放対象領域判定部２６５は、閾値以上の変化数を有する閉塞済み領域５５が存在すると判定する場合（Ｓ６０３：Ｙｅｓ）、ステップＳ６０５に進む。
Ｓ６０５で、解放対象領域判定部２６５は、変化数が閾値以上の閉塞済み領域５５を、解放対象領域として領域解放部２６６に通知する。
【００６９】
Ｓ６０７で、領域解放部２６６は、解放対象領域として通知された閉塞済み領域５５に格納されたデータに対して参照を持つデータを調査する（閉塞済み領域５５に格納されたデータを参照先とする参照元データを調査する）。この調査の範囲は一時領域５１と、閉塞領域５２とを含む全データ領域である。
【００７０】
Ｓ６０９で、領域解放部２６６は、調査結果から、解放対象の閉塞済み領域５５に格納されたデータを参照先とする、参照元データが存在するか否かを判定し、参照元データ有りと判定する場合（Ｓ６０９：Ｙｅｓ）ステップＳ６１１に進む。逆に参照元データが無いと判定する場合（Ｓ６０９：Ｎｏ）、ステップＳ６１９に進む。
【００７１】
Ｓ６１１で、領域解放部２６６は、Ｓ６０９の判定による参照元データが、参照先データと同じ閉塞済み領域５５に格納されているか否かを判定する。領域解放部２６６は、参照元データと参照先データが同一の閉塞済み領域５５に格納されていると判定する場合（Ｓ６１１：Ｙｅｓ）、ステップＳ６１３に進み、逆に、同一の閉塞済み領域５５に格納されていないと判定する場合（Ｓ６１１：Ｎｏ）、ステップＳ６１５に進む。
【００７２】
Ｓ６１３で、領域解放部２６６は、同一の閉塞済み領域に格納された参照元データと参照先データを、閉塞待ち領域５３に移動（複製を含む。）する。
【００７３】
他方、Ｓ６１５で、領域解放部２６６は、閉塞済み領域５５に格納された参照先データを、参照元データが格納される領域（一時領域５１又は閉塞待ち領域５３）に移動（複製を含む。）する。
【００７４】
Ｓ６１７で、領域解放部２６６は、参照元データが参照先データを参照するためのアドレス（ポインタ）情報を、参照元データが存在する領域のアドレス情報に変更する。
【００７５】
領域解放部２６６は、Ｓ６０５において解放対象領域判定部２６５から解放対象として通知された全ての閉塞済み領域５５のメモリ割当てを解除し、メモリ領域の回収を行う。
【００７６】
以上が、第２実施形態の主な特徴の一つである「データ変化記憶処理」及び「閉塞済み領域解放処理」である。
【００７７】
第２実施形態の計算機の説明の最後に、図１２に示す「データ変化記憶処理」及び図１３に示す「閉塞済み領域解放処理」について、主にデータ保持部５０で生ずるデータの遷移を、図１４の模式図を用いて説明する。
【００７８】
図１４では白丸をデータとし、黒丸を起点データとして表す。起点データから矢印により参照されるデータは生存データ、参照されないデータは不要データと表す。データと領域の関係は、最初、図中〔Ｆ〕の状態にあるものとする。
【００７９】
〔Ｆ〕において、解放対象領域５５ａに格納されたデータは、同一領域内に参照元と参照先データが存在するものや、他の領域である閉塞済み領域５５ｂに格納された参照元データ（起点データ）から参照されている参照先データ（生存データ）が存在する。
【００８０】
まず、領域解放部２６６は、Ｓ６１３又はＳ６１５の処理において、解放対象領域閉塞済み領域５５a内で参照元及び参照先の関係にあるデータを閉塞待ち領域５３に移動し又閉塞済み領域５５ｂに格納された参照元データ（起点データ）から参照される参照先データ（生存データ）を参照元データの格納先である閉塞済み領域５５ｂに移動する。この移動により閉塞済み領域５５ａには不要データのみが残ることになる。
【００８１】
〔Ｇ〕は、生存データが参照元データの格納領域に移動された状態を示す。この例では、生存データが、他の閉塞済み領域５５ｂや、閉塞待ち領域５３に移動された様を表している。その後、領域解放部２６６は、Ｓ６１７において、参照元データから参照先データへの参照アドレスを参照元データの領域に変更し、〔Ｈ〕に示すように、Ｓ６１９において、解放対象領域である閉塞済み領域５５ａの割当てを解放し、メモリ領域を回収する。
【００８２】
以上のように、第２実施形態の計算機によれば、不要データがより多く存在する閉塞済み領域を解放対象として選択することで、データの参照関係調査の時間を低減でき、更には、効率的なメモリの再利用を実現できるという効果がある。
【００８３】
〔第３実施形態〕
第２実施形態の計算機は、解放対象領域判定部２６５が、閉塞済み領域５５に格納されたデータに対して発生した更新をデータ変化数として管理し、それに基づいて、不要データが格納されている確度の高い閉塞済み領域を解放対象として選択する手法を採用する。
【００８４】
第３の実施形態の計算機では、このデータ変化数を利用して、将来、解放対象となる閉塞済み領域５５を予測し、この予測された閉塞済み領域５５に格納されたデータに対する参照調査を事前に実施することを特徴の一つとする。この参照調査の一部を事前に実施により、領域解放処理時に必要な参照調査時間を短縮することができるようになっている。
【００８５】
図１５に、第３実施形態の計算機における計算機のメモリ１１に構成された各機能部の構成を示す。第３実施形態の計算機は、閉塞領域管理部６０に、参照関係調査部２６７と、参照関係保持部２６８とを更に有する構成をとる。
【００８６】
参照関係調査部２６７は、閉塞済み領域５５の内、閉塞領域管理テーブル２６９で管理するデータ変化数２８９（図１１参照）に基づいて、将来「解放対象領域」になると予測された「解放予定閉塞済み領域」に格納されたデータに対して参照を持つデータの調査を行う機能部である。
参照関係保持部２６８は、参照関係調査部２６７によって行われた参照調査の結果から、「解放予定閉塞済み領域」に格納されたデータの参照元となるデータの位置情報を記憶する機能部である。
【００８７】
図１６に示すフロー図を用いて、メモリ領域の解放処理に先んじて行われる「事前処理（Ｓ７０１からＳ７０９）」及びメモリの「解放処理（Ｓ７１１〜Ｓ７２１）」の流れを説明する。
Ｓ７０１で、解放対象領域判定部２６５は、閉塞領域管理テーブル２６９から各閉塞済み領域５５のデータ変化数２８９を取得する。この取得処理は、データが変更される契機に同期的に実施してもよいし、非同期的に実施してもよい。
【００８８】
Ｓ７０３で、解放対象領域判定部２６５は、取得したデータ変化数２８９のうち閾値以上のデータ変化数を持つ閉塞済み領域５５が存在するか否かの判定を行う。存在する場合（Ｓ７０３：Ｙｅｓ）には、Ｓ７１１の処理に進み、逆に、存在しない場合（Ｓ７０３：Ｎｏ）、Ｓ７０５の処理に進む。
【００８９】
Ｓ７０５で、解放対象領域判定部２６５は、データ変化数の最も多い閉塞済み領域５５を、「解放予定閉塞済み領域」として設定し、参照関係調査部２６７に通知する。
Ｓ７０７で、「解放予定閉塞済み領域」の通知をうけた参照関係調査部２６７は、閉塞済み領域５５に格納されたデータのうち閉塞済み領域５５に存在し且つ「解放予定閉塞済み領域」に格納されたデータに参照を持つデータの調査を行う。
Ｓ７０９で、Ｓ７０７の処理で調査したデータの位置情報を参照関係保持部に送信し、保持させる。その後、Ｓ７０１の処理に戻る。
【００９０】
Ｓ７１１から、Ｓ７２１までは、閉塞済み領域５５の解放処理の流れであり、主に、領域解放部２６６が、参照関係保持部２６８に保持された、「解放予定閉塞済み領域」に格納されたデータに参照を持つデータの位置情報を利用する点を特徴の一つとする。
【００９１】
Ｓ７１１で、解放対象領域判定部２６５は、データ変化数が閾値以上である閉塞済み領域５５を「解放対象領域」と設定し、領域解放部２６６に通知する。
Ｓ７１３で、領域解放部２６６は、「解放対象領域」に設定された閉塞済み領域５５に格納されたデータを参照するデータの位置情報が、参照調査保持部２６８に保持されているか否かを確認する。領域解放部２６６は、保持していると判断する場合（Ｓ７１３：Ｙｅｓ）、Ｓ７１５に進み、参照調査保持部２６８に保持されている位置情報を取得し、Ｓ７１７に進む。
【００９２】
他方、領域解放部２６６は、保持していないと判断する場合（Ｓ７１３：Ｎｏ）、Ｓ７１７に進む。
Ｓ７１７で、領域解放部２６６は、「解放対象領域」に設定された閉塞済み領域５５に格納されたデータに参照を持つデータの位置情報を、一時領域５１及び閉塞待ち領域５３に対して調査し、存在すればそのデータの位置情報を取得する。
【００９３】
Ｓ７１９で、領域解放部２６６は、Ｓ７１７で調査した一時領域５１及び閉塞待ち領域５３に存在するデータの位置情報と、Ｓ７１５で取得した、参照調査保持部２６８に保持された位置情報に基づいて、「解放対象領域」に設定された閉塞済み領域５５に格納されたデータを、当該解放対象領域である閉塞済み領域５５以外の閉塞領域５２に移動し、参照元データの参照先データに対する位置情報を移動先である閉塞領域５２に変更する。
Ｓ７２１で、領域解放部２６６は、「解放対象領域」に設定された閉塞済み領域５５へのメモリ割り当てを解除し、領域を開放（回収）する。
【００９４】
このように、第３実施形態の計算機は、閉塞済み領域５５について、「事前処理」によって参照調査を行い、参照データの位置情報を領域解放処理の前に適宜保持するようになっている。これにより、領域解放処理が開始された場合に、解放対象領域である閉塞済み領域５５に存在するデータに対する参照元の調査範囲を、一時領域５１と、閉塞待ち領域５３とに限定することができ、領域解放処理の参照元調査に必要なＵＡＰの停止時間を削減することができるという効果がある。
【００９５】
〔第４実施形態〕
第４実施形態の計算機は、解放対象となった閉塞済み領域５５に格納された生存データ等を他の閉塞領域５２に移動する際、移動先の閉塞領域５２が、将来の「解放対象領域」となりにくい閉塞領域５２を移動先として選択することを主な特徴の一つとする。より具体的には、閉塞領域５２の各閉塞待ち領域５３及び閉塞済み領域５５のデータ変化数を利用して、データ変化数の少ない移動先の領域を選択するようになっている。これにより、将来の領域解放処理時に解放対象の閉塞済み領域５５から移動の必要があるデータ数を低減し、解放処理にかかる時間を低減することができる。
【００９６】
本第４実施形態は、第２及び第３実施形態の計算機に示すように（図１０、図１５参照）、変更管理部２４３が、閉塞済み領域５５の更新を検知して、領域状態管理テーブル２６９に、その更新回数であるデータ変化数２８９（図１１参照）を保持する構成を採る。
【００９７】
更に、領域解放部２６６（図１０、図１５）が、解放対象領域となる閉塞済み領域５５に格納されたデータを参照する参照元データの参照調査を行い、参照調査結果に基づいて解放対象の閉塞済み領域５５から生存データ等を移動する際、移動先となる閉塞領域５２が複数存在する場合に、それらのデータ変化数が最小の領域を移動先の領域として選択し、生存データ等を移動する構成を採る。
【００９８】
ここで、解放対象領域となる閉塞済み領域５５を定期的に予測し、解放処理を実施する前に閉塞済み領域内での参照元調査を事前実施する流れを説明する。
【００９９】
領域状態管理テーブル２６９から、参照元調査結果がなく、かつ更新回数であるデータ変化数２８９が最大である閉塞済み領域を取得する。そして、前記取得した閉塞済み領域以外の閉塞済み領域から前記取得した閉塞済み領域に含まれるデータに対する参照が存在するか調査し、参照元調査結果として保持する。
【０１００】
閉塞待ち領域が閉塞済み領域に変更した場合には、参照元調査結果に前記閉塞済み領域に含まれるデータからの参照情報が参照元調査結果に含まれないこととなる。また、閉塞済み領域の解放処理が完了すると、解放処理により存在しなくなった閉塞済み領域に含まれたデータが参照元調査結果に含まれることとなる。このように閉塞済み領域の増減により、既存の参照元調査結果は変更後の状態を示さない古い情報となる。そこで、閉塞済み領域の増減が発生した場合に参照元調査結果を破棄して新たに参照元調査を実施する。また、古い参照元調査結果を保持して更新してもよい。この場合には、閉塞済み領域の増減が発生した時点で存在する参照元調査結果を旧情報とマークする。前記旧情報とマークされた参照元調査結果を利用する場合には、旧情報調査時点の閉塞済み領域を示すＩＤを保持しておき、前記ＩＤと現在のＩＤを比較することで増減された閉塞済み領域を特定する。そして、前記特定した差分となる閉塞済み領域に含まれるデータから旧情報の参照元調査を実施した閉塞済み領域に対する参照調査を実施する。この更新作業は解放処理を実施する場合に行ってもよい。
【０１０１】
図１７のフロー図を用いて、第４実施形態の計算機の「データ移動先決定処理」の流れを説明する。なお、領域解放部２６６が、解放対象の閉塞済み領域５５に格納されたデータの参照元調査を実行済みの状態（第２実施形態のＳ６０７（図１３）、第３実施形態のＳ７１７（図１６））であるものとして説明する。
【０１０２】
Ｓ８０１で、領域解放部２６６は、参照元調査結果から解放対象の閉塞済み領域５５内のデータを参照する参照元のデータが所属する閉塞領域５２の情報を取得する。
Ｓ８０３で、領域解放部２６６は、取得した閉塞領域５２に関する領域が複数存在するか否かを判断する。複数存在する場合（Ｓ８０３：Ｙｅｓ）、Ｓ８０５に進み、逆に、１つしか存在しない場合（Ｓ８０３：Ｎｏ）、Ｓ８０９の処理に進む。
【０１０３】
Ｓ８０５で、領域解放部２６６は、閉塞領域５２に存在するそれら複数の領域の各々について、閉塞領域管理テーブル２６９からデータ変化数２８９を取得する。
Ｓ８０７で、解放処理部２６６は、取得したデータ変化数が最も少ない領域を選択し、「解放対象領域」である閉塞済み領域５５の生存データ等の移動先として設定する。即ち将来の「解放対象領域」となりにくい領域を生存データ等の移動先とすることとなる。
【０１０４】
Ｓ８０９で、領域解放部２６６は、移動対象の生存データ等を、移動先と設定した領域に移動し、全ての参照元データが持つ移動したデータへの参照情報を移動先の位置情報に変更する。
【０１０５】
以上の処理により、「解放対象領域」である閉塞済み領域５５で移動対象となる参照先データを、解放処理対象となりにくい閉塞領域５２の領域に移動させることができる。この「データ移動先決定処理」により、一度移動した生存データ等が再び移動対象となる可能性が低減され、移動処理回数を低減できる。その結果、移動処理によるＵＡＰの停止時間を削減することができるという効果がある。
〔第５実施形態〕
以上、第１から第４実施形態における計算機を説明したが、最後に第５実施形態の計算機について説明する。
【０１０６】
第５実施形態の計算機は、第１から第４実施形態における計算機と連携して、上述した各種処理をサービスレベルに応じて実行させるサービスレベル管理装置を備える点を特徴の一つとする。
【０１０７】
サービスレベルとは、クライアントがＵＡＰ３１にリクエストを送信してから、そのリクエストに対するレスポンスを受け取るまでの時間の程度をいう。本実施形態では、クライアントからＵＡＰ３１に対するリクエスト及びそのレスポンスの送受信に要するネットワーク通信時間、ＵＡＰ３１がリクエストの処理に要する処理時間及び領域解放処理に起因するＵＡＰ処理の停止時間の合計時間の閾値をサービスレベルとする。
【０１０８】
サービスレベル管理装置は、これら各時間を取得して表示装置に表示可能であるとともに、サービスレベル閾値と、実際のサービスとに乖離がある場合、動的にこれを検知し、サービスレベル閾値を基準として計算機の各種処理時間を変更させることができる機能を有する。更に、このような処理時間の変更を、ユーザからの設定値に基づいて変更させる機能も有する。
【０１０９】
このような処理時間を変更させる対象とする計算機上の処理として、本実施形態では、閉塞領域管理部６０が実行する「領域解放処理」を例として説明する。第２〜第４実施形態の計算機では、解放対象の閉塞済み領域５５を選択する際、その閉塞済み領域５５に格納されたデータに対する更新の発生回数を示すデータ変化数２８９を利用する。このデータ変化数２８９が所定の閾値以上となった場合、閉塞領域管理部６０の解放対象領域判定部２６５は、対応する閉塞済み領域５５を解放対象領域として選択する（例えば、第２実施形態のＳ６０３、図１３参照。）。
【０１１０】
閉塞領域管理部６０は、選択した閉塞済み領域５５を解放する前に、その閉塞済み領域５５に格納された不要でないデータ（参照先データ）を、閉塞領域５２にある他の閉塞待ち領域５３等に移動する。データ変化数２８９の値が大であれば、移動させるデータも増加し、逆に、データ変化数２８９の値が小であれば、移動させるデータは減少する。データの移動処理時には、ＵＡＰ３１の処理は停止することから、移動するデータの数は、サービスレベルに直接的に関連する要素である。
そこで、サービスレベル管理装置が、データ変化数２８９の閾値を変更させることで、ＵＡＰ３１の処理停止時間を変更可能とし、サービスレベルの調節を行うことができるようになっている。
【０１１１】
図１８に、第５実施形態の計算機の構成を示す。同図では、汎用のサーバからなるサービスレベル管理装置５００が、ネットワークを介して、計算機及びクライアントと通信接続する構成をとるが、サービスレベル管理装置５００を計算機内部でソフトウェア機能部として構成することも、クライアントのソフトウェア機能部として構成することも可能である。また、図１６では、第２実施形態の計算機における機能構成（図１０参照）を有する計算機を基調としてサービスレベル管理装置５００を追加した例を示すが、第３及び第４実施形態の計算機を適用することも当然に可能である。
【０１１２】
サービスレベル管理装置５００のメモリ５０２には、プログラムとの協働により、ネットワークレスポンス管理部６００、ＵＡＰ性能管理部６０２、領域解放監視部６０４及び閾値変更指示部６０６の各種機能部が実現される。
【０１１３】
ネットワークレスポンス管理部６００は、クライアントからＵＡＰ３１ａ等へのリクスト送信や、ＵＡＰ３１ａ等からの応答送信に要するネットワーク処理時間を取得する機能部である。本実施形態では、ネットワークレスポンス管理部６００が、クライアントに問い合わせることでネットワーク処理時間を取得する。
【０１１４】
ＵＡＰ性能管理部６０２は、ＵＡＰ３１ａ等がリクエスト処理に要する時間を取得する機能部である。ＵＡＰ性能管理部６０２が、ＵＡＰ３１ａ等に問い合わせることで処理時間を取得する。
【０１１５】
領域解放監視部６０４は、閉塞領域管理部６０による「領域解放処理」により、ＵＡＰ３１ａ等が処理を停止する時間を監視したり、実際のサービス時間を演算したり、「領域解放処理」において、解放対象の閉塞済み領域５５から移動することができる不要でないデータの数を演算したりする機能部である。更に、領域解放監視部６０４は、実際のサービス時間とサービスレベルの乖離を監視し、実際のサービス時間がサービスレベルを超過したり、逆にそれ未満であったりする場合に、「領域解放処理」における解放対象領域判定部２６５のサービス変化数判定の閾値を演算する機能を有する。
【０１１６】
閾値変更指示部６０６は、領域解放監視部６０４によって演算されたサービス変化数判定の閾値の通知を受け、解放領域判定部２６５に対し、データ変化数の閾値を変更させる指示をする機能部である。
【０１１７】
表示装置５０４は、サービスレベル管理装置５００が取得した種々の情報や入力装置５０５を介してユーザが入力するための画面を表示する。
図１９に、表示装置５０３に表示される画面３００を模式的に示す。画面３００は、ＵＡＰ３１毎に表示するようになっており、ユーザがマウス等の入力装置５０５で、タグ３０１ａ、３０１ｂ及び３０１ｃを押下する等によりＵＡＰ３１毎の情報に切り替えることができるようになっている（図１７は、ＵＡＰ３１ａに関する表示例を表す）。
【０１１８】
レスポンス時間表示領域３１０には、クライアント及びＵＡＰ３１ａ間の通信時間であるネットワーク時間３１１、ＵＡＰ３１ａの処理に要するＵＡＰ実行時間３１２、「領域解放処理」のためにＵＡＰ３１ａの処理が停止する時間であるＵＡＰ停止時間３１３を線分表示する。更に、サービスレベル閾値３１５（図では、「１秒」とする。）及びサービスレベル閾値３１５と、現在のレスポンス時間（ネットワーク時間３１１、ＵＡＰ実行時間３１２及びＵＡＰ停止時間３１３の合計）との差分時間に、解放対象の領域から移動させることのできるデータの数量を表す移動可能データ数３１５（図は、３０のデータが移動可能であることの表示例である。）を表示する。
ここで、サービスレベル閾値３１４は、初期設定の数値や、予めユーザが入力した数値である。なお、クライアントからの入力により設定するようにしてもよい。
【０１１９】
移動可能データ数３１５は、領域解放監視部６０４が、サービスレベル閾値３１４と、レスポンス時間との差分時間を、１つのデータを移動するのに要する予め定められた時間で乗じることで算出することができる。
【０１２０】
閉塞済み領域解放閾値設定領域３２０には、閉塞済み領域５５の解放閾値となるデータ変化数２８９の現在値３２１（「５０」）、その閾値の変更値の入力を受け付ける変更値入力欄３２２及び決定ボタン３２５を表示する。
【０１２１】
サービスレベル管理装置５００は、領域解放監視部６０４が、実際のサービス時間とサービスレベルとの差分を動的に監視し、解放対象領域判定部２６５に、データ変化数の閾値を変更させることができるようになっているが、この閾値をユーザ指示に応じて設定することも可能である。この場合、ユーザは、現在値３２１と移動可能データ数３１５を比較し、変更値３２２に任意の閾値を入力して、決定ボタン３２５を操作することで、実際のサービス時間を調節することができるようになっている。
【０１２２】
メモリ使用状況表示領域３３０には、メモリの未使用領域のサイズ３３１（「３００ＧＢ」）、利用可能なメモリの最大値３３２（「１０００ＧＢ」）、現在の閉塞待ち領域数３３３（「３領域」）及び現在の閉塞済み領域数３３４（「ｎ領域（ｎ=整数）」を表示する。更に、現在の閉塞待ち領域５３ａ、５３ｂ、５３ｃ並びに閉塞済み領域５５ａ〜ｎ及び各領域の使用状況を模式的に表示する。
【０１２３】
また、模式的に表示した図形を選択すると、その使用状況を数値で表現できるようになっている。例えば、閉塞済み領域５５ａに登録された総データ数が６０で、そのうち更新や削除の変化を受けた変化数を４０とした場合に、総データ数を分母、変化数を分子として４０／６０と表現する。
【０１２４】
図２０のフロー図を用いて、サービスレベル管理装置５００の処理の流れを説明する。なお、以下処理は、サービスレベル管理装置５００の各機能部が実行するものであるが、簡単のために、サービスレベル管理装置５００を処理主体として説明する。
【０１２５】
Ｓ９０１で、サービスレベル管理装置５００は、クライアントと通信し、クライアントと計算機の間の通信に要するネットワーク時間３１１を定期的に取得する。
Ｓ９０３で、サービスレベル管理装置５００は、閉塞領域管理部６０から、閉塞領域５２を管理するためにＵＡＰを停止した時間を含む閉塞領域管理ログを取得し、ＵＡＰ停止時間３１３を取得する。
Ｓ９０５で、サービスレベル管理装置５００は、ＵＡＰ３１等からＵＡＰ実行時間３１２を取得する。
【０１２６】
Ｓ９０７で、サービスレベル管理装置５００は、取得したネットワーク時間３１１、ＵＡＰ実行時間３１２及びＵＡＰ停止時間３１３の合計値を定期的に計算する。
Ｓ９０９で、サービスレベル管理装置５００は、サービスレベル閾値３１４及びＳ９０７で計算した合計値（レスポンス時間）の差分と、１つのデータを移動するのに要する時間とから、移動可能データ数３１５を計算する。
【０１２７】
Ｓ９１１で、サービスレベル管理装置５００は、Ｓ９０１からＳ９０９の処理で得られた情報と、予め記憶している種々の情報を図１９の画面３００のように表示する。
Ｓ９１３で、サービスレベル管理装置は、画面３００の閉塞済み領域３２０を介して、データ変化数２８９の閾値の変更値３２２の入力があったか否かの判断を行う。サービスレベル管理措置は、ユーザからデータ変化数閾値の変更値３２２の入力が無い場合（Ｓ９１３：Ｎｏ）、Ｓ９１５の処理に進み、変更入力が有る場合（Ｓ９１３：Ｙｅｓ）Ｓ９１９の処理に進む。
【０１２８】
Ｓ９１５で、サービスレベル管理装置５００は、Ｓ９０７で計算した合計値が、サービスレベル閾値３１４と一致するか否かを判定する。サービスレベル管理装置５００は、不一致（超過又は以下）と判断する場合（Ｓ９１５：Ｎｏ）、Ｓ９１７に進み、一致すると判断する場合（Ｓ９１５：Ｎｏ）、Ｓ９０１の処理に戻る。
【０１２９】
Ｓ９１７で、サービスレベル管理装置５００は、合計値をサービスレベル閾値３１４に一致するようにデータ変化数閾値の変更値を算出する。具体的には、合計値がサービスレベル閾値３１４以下である場合、現在値３２１に移動可能データ数３１５を加算して変更値を求める。逆に合計値がサービスレベル閾値３１４超過する場合、現在値３２１に移動可能データ数３１５を減算して変更値を求める。
【０１３０】
Ｓ９１９で、サービスレベル管理装置５００は、Ｓ９１３又はＳ９１７のデータ変化数閾値の変更値を、解放対象領域判定部２６５に送信し、閾値を変更させる。
【０１３１】
このように、第５実施形態の計算機によれば、サービスレベルを動的或いは静的に、一定に保ったり、ユーザが任意に実際のサービスレスポンス時間を調整したりすることができる。
【０１３２】
以上説明したように、本発明を、上述した種々の形態に適用することができる。しかしながら、本発明はこれら実施形態に限定されるものではなく、その趣旨に反しない範囲で、様々な設計変更が可能である。例えば、上記した各実施形態は、本発明の理解のために詳細に説明したものであり、必ずしも全ての構成を有するものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることも可能であり、ある実施形態の構成に他の実施形態の構成を加えることも可能である。
【０１３３】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、集積回路で設計する等によりハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、ＩＣカード、ＳＤカード又はＤＶＤ等の記録媒体に置くことができ、インターネット等の通信回線を介してダウンロードすることも当然に可能である。
【０１３４】
また、制御線や情報線は説明上必要と考えられるものを示しており、必ずしも全ての制御線や情報線を示しているとは限らず、殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【０１３５】
３０  …  ＵＡＰ実行部
３１  …  ＵＡＰ
４０  …  データ処理部
４１  …  更新処理部
５０  …  データ保持部
５１  …  一時領域
５２  …  閉塞領域
５３  …  閉塞待ち領域
５５  …  閉塞済み領域
６０  …  閉塞領域管理部
６４  …  領域状態保持部
６９  …  閉塞領域管理テーブル
７０  …  不要データ回収部
２４３  …  変更管理部
２６５  …  解放対象領域判定部
２６６  …  領域解放部
２６７  …  参照関係調査部
２６８  …  参照関係保持部
３１４  …  サービスレベル閾値
３１５  …  移動可能データ数
５００  …  サービスレベル管理装置
【図１】
0005509164.tif 000002
【図２】
0005509164.tif 000003
【図３】
0005509164.tif 000004
【図４】
0005509164.tif 000005
【図５】
0005509164.tif 000006
【図６】
0005509164.tif 000007
【図７】
0005509164.tif 000008
【図８】
0005509164.tif 000009
【図９】
0005509164.tif 000010
【図１０】
0005509164.tif 000011
【図１１】
0005509164.tif 000012
【図１２】
0005509164.tif 000013
【図１３】
0005509164.tif 000014
【図１４】
0005509164.tif 000015
【図１５】
0005509164.tif 000016
【図１６】
0005509164.tif 000017
【図１７】
0005509164.tif 000018
【図１８】
0005509164.tif 000019
【図１９】
0005509164.tif 000020
【図２０】
0005509164.tif 000021