(57)【要約】【課題】アプリの実行によって発生する不要なメモリ領域を、探索するために必要な負荷を、端末において軽減する。【解決手段】端末及びサーバは、各々プロセッサとメモリとを備え、端末は、端末に備わるプロセッサによってアプリケーションを実行し、端末に備わるメモリは、アプリケーションが実行される際に、アプリケーションによって用いられる複数のオブジェクトを含み、端末は、所定の第１の契機において、端末に備わるメモリにおける各オブジェクトの状態を示す第１の情報をサーバに送信し、サーバは、少なくとも一つの第１の情報を保持し、端末は、所定の第２の契機において、端末に備わるメモリから解放するオブジェクトを抽出するよう、サーバに要求し、サーバは、保持された第１の情報に基づいて、端末に備わるメモリから解放するオブジェクトを抽出し、抽出されたオブジェクトを示す第２の情報を、端末に送信する。【選択図】図１
2011232919.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも一つの端末と、ネットワークを介して前記端末に接続されるサーバとを備える計算機システムであって、
前記端末及び前記サーバは、各々プロセッサとメモリとを備え、
前記端末は、前記端末に備わるプロセッサによってアプリケーションを実行し、
前記端末に備わるメモリは、前記アプリケーションが実行される際に、前記アプリケーションによって用いられる複数のオブジェクトを含み、
前記端末は、所定の第１の契機において、前記端末に備わるメモリにおける各オブジェクトの状態を示す第１の情報を前記サーバに送信し、
前記サーバは、少なくとも一つの前記第１の情報を保持し、
前記端末は、所定の第２の契機において、前記端末に備わるメモリから解放する前記オブジェクトを抽出するよう、前記サーバに要求し、
前記サーバは、
前記保持された第１の情報に基づいて、前記端末に備わるメモリから解放するオブジェクトを抽出し、
前記抽出されたオブジェクトを示す第２の情報を、前記端末に送信することを特徴とする計算機システム。
【請求項２】
前記第１の情報は、前記各オブジェクトを一意に示す識別子と、前記各オブジェクトが参照する他の前記オブジェクトを識別する情報を含む参照情報と、を含み、
前記サーバは、前記送信された第１の情報によって、前記保持された第１の情報に含まれる前記参照情報を更新することを特徴とする請求項１に記載の計算機システム。
【請求項３】
前記第１の情報は、前記端末に備わるメモリにおける前記各オブジェクトのアドレスを含み、
前記サーバは、前記保持された第１の情報に基づいて、前記解放するオブジェクトの前記端末に備わるメモリにおけるアドレスを抽出し、
前記第２の情報は、前記抽出されたアドレスを含むことを特徴とする請求項２に記載の計算機システム。
【請求項４】
前記第１の情報は、前記各オブジェクトのサイズを含み、
前記サーバは、
前記保持された第１の情報に基づいて、前記各オブジェクト間の空きメモリ領域に前記オブジェクトが配置されるように、前記各オブジェクトの前記端末におけるアドレスを再配置し、
前記第２の情報は、前記オブジェクトの識別子と、前記再配置の後の当該オブジェクトのアドレスと、を含むことを特徴とする請求項３に記載の計算機システム。
【請求項５】
前記所定の第１の契機は、前回の前記第１の契機から所定の時間が経過した後、又は、前記複数のオブジェクトが所定の回数変更された後であり、
前記所定の第２の契機は、前記端末が、前記第１の情報を所定の回数、前記サーバに送信した後であることを特徴とする請求項１に記載の計算機システム。
【請求項６】
前記第１の情報は、前記端末に備わるメモリにおける各オブジェクト、及び、当該オブジェクトの相対的なアドレスを含み、
前記サーバは、前記第１の情報に基づいて、前記サーバに備わるメモリ上に、前記端末に備わるメモリにおける各オブジェクトを、前記相対的なアドレスに配置することを特徴とする請求項１に記載の計算機システム。
【請求項７】
前記端末に備わるメモリは、第１の前記領域と第２の前記領域とを含み、
前記第１の情報は、前記第１の領域におけるオブジェクトの情報と、前記第２の領域におけるオブジェクトが参照する前記第１の領域におけるオブジェクトを識別する情報とを含み、
前記サーバは、前記第１の情報に基づいて、前記第２の領域におけるオブジェクトが参照する第１の領域におけるオブジェクト以外から、前記解放するオブジェクトを抽出することを特徴とする請求項１に記載の計算機システム。
【請求項８】
前記端末は、前記所定の第２の契機において、第１の情報を送信し、
前記所定の第２の契機は、前記第１の領域におけるオブジェクトが所定の回数変更された後、又は、前記第２の領域におけるオブジェクトが、前記第１の領域に移動した後であることを特徴とする請求項７に記載の計算機システム。
【請求項９】
少なくとも一つの端末と、ネットワークを介して接続されるサーバであって、
前記端末及び前記サーバは、各々プロセッサとメモリとを備え、
前記端末は、前記端末に備わるプロセッサによってアプリケーションを実行し、
前記端末に備わるメモリは、前記アプリケーションが実行される際に、前記アプリケーションによって用いられる複数のオブジェクトを含み、
前記サーバは、
所定の第１の契機において、前記端末に備わるメモリにおける各オブジェクトの状態を示す少なくとも一つの第１の情報を、前記端末から受信し、
少なくとも一つの前記第１の情報を保持し、
所定の第２の契機において、前記端末に備わるメモリから解放する前記オブジェクトを抽出する旨の要求を受信し、
前記保持された第１の情報に基づいて、前記メモリから解放するオブジェクトを抽出し、
前記抽出されたオブジェクトを示す第２の情報を送信することを特徴とするサーバ。
【請求項１０】
前記第１の情報は、前記各オブジェクトを一意に示す識別子と、前記各オブジェクトが参照する他の前記オブジェクトを識別する情報を含む参照情報と、を含み、
前記サーバは、前記送信された第１の情報によって、前記保持された第１の情報に含まれる前記参照情報を更新することを特徴とする請求項９に記載のサーバ。
【請求項１１】
前記第１の情報は、前記端末に備わるメモリにおける前記各オブジェクトのアドレスを含み、
前記サーバは、前記保持された第１の情報に基づいて、前記解放するオブジェクトの前記端末に備わるメモリにおけるアドレスを抽出し、
前記第２の情報は、前記抽出されたアドレスを含むことを特徴とする請求項１０に記載のサーバ。
【請求項１２】
前記第１の情報は、前記各オブジェクトのサイズを含み、
前記サーバは、
前記保持された第１の情報に基づいて、前記各オブジェクト間の空きメモリ領域に前記オブジェクトが配置されるように、前記各オブジェクトの前記端末におけるアドレスを再配置し、
前記第２の情報は、前記オブジェクトの識別子と、前記再配置の後の当該オブジェクトのアドレスと、を含むことを特徴とする請求項１１に記載のサーバ。
【請求項１３】
前記所定の第１の契機は、前回の前記第１の契機から所定の時間が経過した後、又は、前記複数のオブジェクトが所定の回数変更された後であり、
前記所定の第２の契機は、前記端末が、前記第１の情報を所定の回数、前記サーバに送信した後であることを特徴とする請求項９に記載のサーバ。
【請求項１４】
前記第１の情報は、前記端末に備わるメモリにおける各オブジェクト、及び、当該オブジェクトの相対的なアドレスを含み、
前記サーバは、前記第１の情報に基づいて、前記サーバに備わるメモリ上に、前記端末に備わるメモリにおける各オブジェクトを、前記相対的なアドレスに配置することを特徴とする請求項９に記載のサーバ。
【請求項１５】
前記端末に備わるメモリは、第１の前記領域と第２の前記領域とを含み、
前記第１の情報は、前記第１の領域におけるオブジェクトの情報と、前記第２の領域におけるオブジェクトが参照する前記第１の領域におけるオブジェクトを識別する情報とを含み、
前記サーバは、前記第１の情報に基づいて、前記第２の領域におけるオブジェクトが参照する第１の領域におけるオブジェクト以外から、前記解放するオブジェクトを抽出することを特徴とする請求項９に記載のサーバ。
【請求項１６】
前記サーバは、前記所定の第２の契機において、第１の情報を受信し、
前記所定の第２の契機は、前記第１の領域におけるオブジェクトが所定の回数変更された後、又は、前記第２の領域におけるオブジェクトが、前記第１の領域に移動した後であることを特徴とする請求項１５に記載のサーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システムに関し、特に、不要なメモリ領域を解放するガーベジコレクションを行う計算機システムに関する。
【背景技術】
【０００２】
計算機システムにはＯＳやミドルウェアなどに従って様々なプラットフォームがあり、アプリケーション（以下、アプリと記載）をそれぞれのプラットフォームごとに作成する必要があった。そして、特定のプラットフォーム向けに作成されたアプリを、別の環境において実行するために、アプリは作成し直されており、この作成し直しに、多大な工数が必要とされる。そこで、一度作成したアプリを様々な環境で実行可能にするバーチャルマシン（以後、ＶＭと呼ぶ）という概念がある。
【０００３】
ＶＭによれば、アプリが利用する計算機リソースを抽象化することによって、環境毎の差異を吸収することができる。ＶＭには、Ｊａｖａ  ＶＭ、Ａｄｏｂｅ  Ｆｌａｓｈ、ＡｄｏｂｅＡＩＲなどがある（Ｊａｖａ及びその他のＪａｖａを含む商標は、米国およびその他の国における米国ＳｕｎＭｉｃｒｏｓｙｓｔｅｍｓ，Ｉｎｃの商標又は、登録商標である）（ＡｄｏｂｅＡＩＲ、ならびにＡｄｏｂｅＦｌａｓｈは、Ａｄｏｂｅ  Ｓｙｓｔｅｍｓ  Ｉｎｃｏｒｐｏｒａｔｅｄ．（アドビシステムズ社）の米国ならびにその他の国における商標又は登録商標です）。
【０００４】
これらのＶＭは、アプリが利用するメモリ空間をヒープ領域として管理しており、ヒープ領域中の利用されなくなった領域を解放するガーベジコレクション（以後、ＧＣと呼ぶ）を行う。
【０００５】
ＧＣによって解放されるヒープ領域の単位には、オブジェクトがある。オブジェクトはアプリを構成するためのデータ及び処理の意味のある塊を示し、各オブジェクトは、互いに連携し動作する。
【０００６】
オブジェクトＡからオブジェクトＢのデータ及び処理を利用するために、オブジェクトＡは、オブジェクトＢを参照する。そして、その参照は保持される必要がある。さらに、どのオブジェクトからも参照されていないオブジェクトは不要なオブジェクトであり、ＧＣで解放する対象となる。
【０００７】
ＧＣの一般的な方法には、マークアンドスイープ、及び、コピーＧＣがある（例えば、非特許文献１参照）。これらのＧＣは、ヒープ領域のメモリ残量が少なくなった時などにＧＣを開始し、不要なオブジェクトを探す走査処理とオブジェクトをヒープ領域から解放する解放処理との２ステップの処理を行う。
【０００８】
マークアンドスイープによる走査処理は、参照の起点となる参照ルートからオブジェクトの参照を辿り、辿れたオブジェクトにマークをつける。マークアンドスイープは、全ての参照を辿った後に、解放処理でマークがつかなかったオブジェクトを、メモリから解放する方法である。
【０００９】
コピーＧＣは、現在利用しているメモリ空間とは別のメモリ空間を用意し、用意したメモリ空間に必要なオブジェクトを移し変える。そして、走査処理において、参照ルートからオブジェクトの参照を辿り、辿れたオブジェクトを別のメモリ空間にコピーする。さらに、全ての参照を辿った後に、解放処理で利用するメモリ空間を用意したメモリ空間に変え、元のメモリ空間を全て解放する。
【００１０】
例えばＪａｖａＶＭは、マークアンドスイープ、及びコピーＧＣを利用している（例えば、非特許文献２参照）。
【先行技術文献】
【非特許文献】
【００１１】
【非特許文献１】Ｒｉｃｈａｒｄ  Ｊｏｎｅｓ、Ｒａｆａｅｌ  Ｌｉｎｓ著、「Ｇａｒｂａｇｅ  Ｃｏｌｌｅｃｔｉｏｎ：  Ａｌｇｏｒｉｔｈｍｓ  ｆｏｒ  Ａｕｔｏｍａｔｉｃ  Ｄｙｎａｍｉｃ  Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ」、Ｊｏｈｎ  Ｗｉｌｅｙ＆Ｓｏｎｓ，Ｌｔｄ、１９９６年、ＩＳＢＮ：９７８−０４７１９４１４８４、ｐ１９−４０
【非特許文献２】Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ  Ｉｎｃ、"Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  ｉｎ  ｔｈｅ  Ｊａｖａ  ＨｏｔＳｐｏｔ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ"、［ｏｎｌｉｎｅ］、２００６年４月、［２０１０年４月６日検索］、インターネット、＜ＵＲＬ：ｈｔｔｐ：／／．．．／ｍｅｍｏｒｙｍａｎａｇｅｍｅｎｔ＿ｗｈｉｔｅｐａｐｅｒ．ｐｄｆ＞
【発明の概要】
【発明が解決しようとする課題】
【００１２】
端末である計算機が非力な場合であっても、ＧＣの処理負荷のためアプリ本来の処理を停止せずに、ユーザへの応答性が著しく低下しないシステムの提供である。
【課題を解決するための手段】
【００１３】
本発明の代表的な一形態によると、少なくとも一つの端末と、ネットワークを介して前記端末に接続されるサーバとを備える計算機システムであって、前記端末及び前記サーバは、各々プロセッサとメモリとを備え、前記端末は、前記端末に備わるプロセッサによってアプリケーションを実行し、前記端末に備わるメモリは、前記アプリケーションが実行される際に、前記アプリケーションによって用いられる複数のオブジェクトを含み、前記端末は、所定の第１の契機において、前記端末に備わるメモリにおける各オブジェクトの状態を示す第１の情報を前記サーバに送信し、前記サーバは、少なくとも一つの前記第１の情報を保持し、前記端末は、所定の第２の契機において、前記端末に備わるメモリから解放する前記オブジェクトを抽出するよう、前記サーバに要求し、前記サーバは、前記保持された第１の情報に基づいて、前記端末に備わるメモリから解放するオブジェクトを抽出し、前記抽出されたオブジェクトを示す第２の情報を、前記端末に送信する。
【発明の効果】
【００１４】
本発明の一実施形態によると、ＧＣ負荷を軽減できる。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１の実施形態のシステム構成を示すブロック図である。
【図２】本発明の第１の実施形態のアプリの起動時の処理を示すフローチャートである。
【図３】本発明の第１の実施形態のメモリ空間モデルを更新する処理を示すフローチャートである。
【図４Ａ】本発明の第１の実施形態のヒープ領域が変更される際の処理を示すフローチャートである。
【図４Ｂ】本発明の第１の実施形態のヒープ領域のオブジェクト参照に変更があった箇所を検索する処理を示すフローチャートである。
【図５】本発明の第１の実施形態のオブジェクト・アドレス対応テーブルの例を示す説明図である。
【図６】本発明の第１の実施形態のメモリ空間更新情報の例を示す説明図である。
【図７】本発明の第１の実施形態のメモリ空間モデルに対応するオブジェクト対応テーブルの例を示す説明図である。
【図８】本発明の第１の実施形態のＧＣの概要を示すフローチャートである。
【図９】本発明の第１の実施形態のＧＣが必要なオブジェクトを取得する処理を示すフローチャートである。
【図１０】本発明の第１の実施形態の解放オブジェクト情報の例を示す説明図である。
【図１１】本発明の第１の実施形態のＧＣサーバにおいてコンパクション計算をする場合のメモリ空間更新情報の例を示す説明図である。
【図１２】本発明の第１の実施形態のコンパクション計算をする場合のメモリ空間モデルに対応するオブジェクト情報テーブルの例を示す説明図である。
【図１３】本発明の第１の実施形態のコンパクションをする場合の解放オブジェクト情報の例を示す説明図である。
【図１４】本発明の第１の実施形態のコンパクション処理を示すフローチャートである。
【図１５】本発明の第２の実施形態のシステム構成を示すブロック図である。
【図１６】本発明の第２の実施形態のメモリ空間更新情報の例を示す説明図である。
【図１７】本発明の第２の実施形態の解放オブジェクト情報の例を示す説明図である。
【図１８】本発明の第３の実施形態のシステム構成を示す説明図である。
【図１９】本発明の第３の実施形態のＧＣを示すフローチャートである。
【図２０Ａ】本発明の第３の実施形態のアプリがメソッドを実行した際の処理を示すフローチャートである。
【図２０Ｂ】本発明の第３の実施形態のメモリ空間更新情報の生成処理を示すフローチャートである。
【図２１】本発明の第３の実施形態のメモリ空間更新情報を示す説明図である。
【図２２】本発明の第４の実施形態のシステム構成を示す説明図である。
【図２３】本発明の第４の実施形態のｎｅｗ領域のＧＣを示すフローチャートである。
【図２４】本発明の第４の実施形態のｏｌｄ領域のＧＣを示すフローチャートである。
【図２５】本発明の第４の実施形態のメモリ空間更新情報の例を示す説明図である。
【図２６】本発明の第５の実施形態のシステム構成を示すブロック図である。
【図２７】本発明の第５の実施形態の起動時の処理を示すフローチャートである。
【発明を実施するための形態】
【００１６】
（第１の実施形態）
図１は、本発明の第１の実施形態のシステム構成を示すブロック図である。
【００１７】
第１の実施形態のシステムには、端末１００及びＧＣサーバ２００が備わる。図１に示す端末１００及びＧＣサーバ２００は、ネットワーク３００を介して接続される。
【００１８】
端末１００は、ＣＰＵ１０１、メモリ１１０、通信部１０４、入力部１０３、及び、出力部１０２を備える計算機であり、ＧＣサーバ２００はＣＰＵ２０１、メモリ２１０、通信部２０４、入力部２０３、及び、出力部２０２を備える計算機である。
【００１９】
ＣＰＵ１０１は、端末１００がメモリ１１０に格納されたプログラム等を呼び出し、実行するために用いるプロセッサである。また通信部１０４は、ネットワーク３００に接続するためのインターフェースである。
【００２０】
入力部１０３は、ボタン、タッチパネル、キーボード又はマウス等と接続され、ユーザ等からの指示を示す情報を端末１００に入力するための装置である。出力部１０２は、ディスプレイ等に接続され、端末１００の処理結果を、出力するための装置である。
【００２１】
ＧＣサーバ２００におけるＣＰＵ２０１、通信部２０４、入力部２０３、及び、出力部２０２は、端末１００におけるＣＰＵ１０１、入力部１０３、通信部１０４、及び、出力部１０２と同じ機能を持つ。
【００２２】
端末１００のメモリ１１０において、ＣＰＵ１０１によって、ＶＭ１１１が実行され、ＶＭ１１１によってアプリ１１２が実行される。ＶＭ１１１は、アプリ１１２が利用するオブジェクトをヒープ領域１１３に格納する。
【００２３】
ＶＭ１１１は、ＧＣ開始制御部１２１、変更箇所収集部１２２、メモリ空間更新情報生成部１２３、送信タイミング制御部１２４、解放オブジェクト情報処理部１２５、及び、オブジェクト・アドレス対応テーブル１２６を備える。
【００２４】
ＧＣ開始制御部１２１は、ＧＣを開始するタイミングを判定することによってＧＣを制御する。変更箇所収集部１２２は、参照関係にあるオブジェクトのうち変更されたオブジェクトの箇所を収集する。
【００２５】
メモリ空間更新情報生成部１２３は、メモリ空間更新情報を生成する。メモリ空間更新情報は、ＧＣサーバ２００のメモリ空間モデル２２３を更新するために用いられ、ヒープ領域１１３におけるオブジェクトの更新情報などを含む。
【００２６】
送信タイミング制御部は、変更箇所収集部１２２が実行されるタイミングを判定し、変更箇所収集部１２２を実行させることによって、変更箇所収集部１２２を制御する。解放オブジェクト情報処理部は、ＧＣサーバ２００から受信する解放オブジェクト情報（詳細については、後述）を解析し、ヒープ領域１１３のオブジェクトを解放する。
【００２７】
本実施形態におけるオブジェクトの解放は、一般的に行われるメモリからのオブジェクトの解放であり、メモリからオブジェクトを解放した後、別のオブジェクトによってメモリの同じアドレスが確保されることを可能にする処理である。
【００２８】
オブジェクト・アドレス対応テーブル１２６には、オブジェクトＩＤとそのオブジェクトＩＤが示すオブジェクトの開始アドレスとの対応関係が格納される。オブジェクトＩＤは、オブジェクトを一意に識別できる識別子である。オブジェクト・アドレス対応テーブル１２６は、変更箇所収集部１２２によって更新される。
【００２９】
ＧＣサーバ２００のメモリ２１０は、ＧＣ走査部２２１、メモリ空間モデル更新部２２２、及び、メモリ空間モデル２２３を備える。
【００３０】
ＧＣ走査部２２１は、メモリ空間モデル２２３を走査し、不要なオブジェクトを探索し、解放オブジェクト情報を生成する。解放オブジェクト情報は、端末１００において不要なオブジェクトＩＤの情報を含む。メモリ空間モデル更新部２２２は、メモリ空間更新情報を利用し、メモリ空間モデル２２３を更新する。
【００３１】
メモリ空間モデル２２３は、端末１００のヒープ領域１１３のオブジェクトの参照関係を示す。メモリ空間モデル２２３は、オブジェクトの参照関係をモデル化したものである。
【００３２】
図２は、本発明の第１の実施形態のアプリ１１２の起動時の処理を示すフローチャートである。
【００３３】
端末１００は、アプリ１１２を起動する際に、ＧＣサーバ２００とのコネクションを確立するために図２に示す処理を行う。
【００３４】
端末１００においてアプリ１１２が起動すると（ステップ１００１）、ＶＭ１１１は、アプリ１１２が利用するメモリ領域を、ヒープ領域１１３に確保する（ステップ１００２）。その後、端末１００は、アプリ１１２に対応するコネクションを、ＧＣサーバ２００と確立し（ステップ１００３）、アプリＩＤ（アプリを一意に識別する識別子）又はユーザ名などのアプリ１１２に関する情報を、ＧＣサーバ２００に送信する。
【００３５】
ＧＣサーバ２００は、アプリ１１２に対応するコネクションを、端末１００と確立すると（ステップ１０１１）、アプリ１１２に関する情報を端末１００から受信し、ＧＣを許可するか否かを判定する（ステップ１０１２）。ステップ１０１２において、ＧＣサーバ２００は、受信したアプリＩＤ、ユーザＩＤ、又は、アプリ１１２に関する情報を送ってきた端末１００のＩＰアドレスなどを参照し、ＧＣを許可するアプリ１１２であるか否かを判定する。
【００３６】
ステップ１０１２において、アプリ１１２へのＧＣを許可しないと判定した場合、ＧＣサーバ２００は、コネクションを切断し、処理を中止する。ステップ１０１２において、アプリ１１２へのＧＣを許可すると判定した場合、ＧＣサーバ２００は、ステップ１０１３に移行する。
【００３７】
ステップ１０１２の後、ＧＣサーバ２００は、ＧＣが許可されたアプリ１１２に対応するテーブルを、メモリ空間モデル２２３に生成することによって、アプリ１１２に対応するメモリ空間モデル２２３を準備する（ステップ１０１３）。メモリ空間モデル２２３に生成されるアプリ１１２に対応するテーブルには、アプリＩＤなどアプリを識別できる情報が付加される。
【００３８】
ＧＣサーバ２００は、メモリ空間モデル２２３の準備が終了すると、メモリ空間モデル２２３の準備が終了した旨に、端末１００に送信する。メモリ空間モデル２２３の準備が終了した旨には、アプリＩＤが付加される。
【００３９】
端末１００は、メモリ空間モデル２２３の準備が終了した旨をＧＣサーバ２００から受信すると（ステップ１００５）、アプリ１１２に含まれるクラスをロードすることによって、アプリ１１２を実行する準備をする（ステップ１００６）。そして、端末１００は、アプリ１１２を開始する（ステップ１００７）。
【００４０】
その後端末１００は、アプリ１１２の実行中に必要な場合、ＧＣサーバ２００にＧＣをするよう指示をする（ステップ１００８）。また、ＧＣサーバ２００は、アプリ１１２の実行中に端末１００の指示に従って、ＧＣをする（ステップ１０１５）。
【００４１】
なお、図２に示すアプリ起動の処理は、後述する第２の実施形態〜第４の実施形態においても、同じ処理が行われる。
【００４２】
図３は、本発明の第１の実施形態のメモリ空間モデル２２３を更新する処理を示すフローチャートである。
【００４３】
まず送信タイミング制御部１２４によって、メモリ空間更新情報を送信するタイミングが判定される（ステップ４００）。メモリ空間更新情報を送信するタイミングには、例えば、特定回数オブジェクト参照（すなわちオブジェクトが参照されている状態）が変更された場合、端末１００において特定時間が経過した場合、又は、メモリ１１０の残りメモリ量が特定値になった場合、などのタイミングがある。
【００４４】
送信タイミング制御部１２４によって送信タイミングが判定されると、変更箇所収集部１２２は、前回のメモリ空間更新情報を生成した時から変更があったオブジェクト参照箇所、すなわち、オブジェクトが参照されている状態に変更があった箇所を検索する。
【００４５】
参照の変更箇所を見つける方法のひとつにカードマーキング（日本ＩＢＭ、"Ｊａｖａの理論と実践：１．４．１  ＪＶＭ中のガーベジ・コレクション"、［ｏｎｌｉｎｅ］、［２０１０年４月６日検索］、インターネット、＜ｈｔｔｐ：／／．．．／ｄｅｖｅｌｏｐｅｒｗｏｒｋｓ／ｊｐ／ｊａｖａ／ｌｉｂｒａｒｙ／ｊ−ｊｔｐ１１２５３／＞）がある。
【００４６】
カードマーキングは、ヒープ領域１１３を一定サイズのカードに区切り、カードに対応したテーブルを管理する方法である。カード内の領域が変更されるとテーブルにマークがつき、テーブルを検索することによって変更されたヒープ領域１１３の箇所を把握することができる。
【００４７】
図４Ａは、本発明の第１の実施形態のヒープ領域１１３が変更される際の処理を示すフローチャートである。
【００４８】
端末１００は、アプリ１１２によってヒープ領域１１３が変更される際に（ステップ１０２１）、カードマーキングによって生成されたテーブルのうち、変更されたヒープ領域１１３に対応するテーブルに印を付加する（ステップ１０２２）。
【００４９】
図４Ｂは、本発明の第１の実施形態のヒープ領域１１３のオブジェクト参照に変更があった箇所を抽出する処理を示すフローチャートである。
【００５０】
変更箇所収集部１２２は、ヒープ領域１１３の変更箇所を抽出するため、カードマーキングによって生成されたテーブルのうち、印が付加されたテーブルを検索し、印が付加されたテーブルに対応するヒープ領域１１３Ｘを探す（ステップ１０２３）。そして、ヒープ領域１１３Ｘに含まれるオブジェクトのうち、参照の状態が変更されたオブジェクトを抽出する（ステップ１０２４）。
【００５１】
ステップ１０２４において、参照の状態に変更があったオブジェクトを取得すると、変更箇所収集部１２２は、ヒープ領域１１３Ｘに対応するテーブルの印を消す（ステップ１０２５）。そして、カードマーキングによって生成されたテーブルのうち、他に印が付加されたテーブルがある場合、ステップ１０２３に戻る。カードマーキングによって生成されたテーブルのうち、他に印が付加されたテーブルがない場合、処理を終了する。
【００５２】
変更箇所収集部１２２によって、変更されたオブジェクト参照箇所が抽出された後、メモリ空間更新情報生成部１２３は、変更があった参照からメモリ空間更新情報を生成し（ステップ４０３）、生成されたメモリ空間更新情報をＧＣサーバ２００へ送信する（ステップ４０４）。ステップ４０４においてメモリ空間更新情報生成部１２３は、オブジェクト・アドレス対応テーブル１２６を参照し、オブジェクトのアドレスをオブジェクトＩＤに変換した情報を、メモリ空間更新情報に付加し、ＧＣサーバ２００へ送信する。
【００５３】
ＧＣサーバ２００は、メモリ空間更新情報を受信すると（ステップ４０５）、メモリ空間モデル更新部２２２によって、メモリ空間モデル２２３を更新する（ステップ４０６）。さらに、メモリ空間モデル更新部２２２は、メモリ空間モデル２２３を走査し、不要なオブジェクトを抽出する（ステップ４０７）。
【００５４】
本実施形態において、参照の変更箇所を見つけ出すステップ（ステップ４０２）からメモリ空間モデルを更新し、走査するステップ（ステップ４０７）までの処理を、メモリ空間モデル更新処理４２０と呼ぶ。
【００５５】
図５は、本発明の第１の実施形態のオブジェクト・アドレス対応テーブル１２６の例を示す説明図である。
【００５６】
オブジェクト・アドレス対応テーブル１２６は、オブジェクトＩＤ列６０１とアドレス列６０２を含む。オブジェクトＩＤ列６０１は、各オブジェクトを一意に識別する識別子を示す。アドレス列６０２は、各オブジェクトの開始アドレスを示し、ヒープ領域１１３の開始アドレスからの相対値を示す。
【００５７】
図６は、本発明の第１の実施形態のメモリ空間更新情報の例を示す説明図である。
【００５８】
図６に示すメモリ空間更新情報は、ＪＳＯＮによって表記される。ＪＳＯＮは、ＪａｖａＳｃｒｉｐｔのオブジェクト表記構文であり、ＲＦＣにおいて定義される（ＩＥＴＦ、"Ｔｈｅ  ａｐｐｌｉｃａｔｉｏｎ／ｊｓｏｎ  Ｍｅｄｉａ  Ｔｙｐｅ  ｆｏｒ  ＪａｖａＳｃｒｉｐｔ  Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ  （ＪＳＯＮ）"、［ｏｎｌｉｎｅ］、２００６年７月、インターネット、＜ＵＲＬ：ｈｔｔｐ：／／．．．／ｒｆｃ／ｒｆｃ４６２７．ｔｘｔ＞）。
【００５９】
ＧＣサーバ２００にメモリ空間モデル２２３の更新を指示する場合、ｏｐｅｒａｔｉｏｎ要素１１０１には、"ｕｐｄａｔｅ"が格納され、ＧＣサーバ２００に更新かつＧＣを指示する場合、ｏｐｅｒａｔｉｏｎ要素１１０１には、"ＧＣ"が格納される。
【００６０】
ｒｅｆ要素１１０２は、オブジェクトの参照情報の変更を、配列によって示す。配列の各要素は参照の変更を示し、ｆｒｏｍ要素１１０３は参照元であるオブジェクトＩＤを示し、ｔｏ要素１１０４は参照先であるオブジェクトＩＤを示す。
【００６１】
ａｃｔｉｏｎ要素１１０５は、オブジェクトの参照状態が変更される内容を示す。参照状態が削除された場合、ａｃｔｉｏｎ要素１１０５には"ｄｅｌ"が格納され、参照状態が追加された場合、ａｃｔｉｏｎ要素１１０５には"ａｄｄ"が格納される。
【００６２】
図６に示すメモリ空間更新情報の例は、オブジェクトＡからオブジェクトＢへの参照が削除され、オブジェクトＡからオブジェクトＣへの参照が追加されることを示し、すなわち、オブジェクトＡからオブジェクトＢへの参照がオブジェクトＣの参照に更新されることを示す。
【００６３】
図７は、本発明の第１の実施形態のメモリ空間モデル２２３に対応するオブジェクト対応テーブル６１０の例を示す説明図である。
【００６４】
オブジェクト対応テーブル６１０は、参照元オブジェクト列６１１と参照先オブジェクト列６１２とを含む。参照元オブジェクト列６１１は、メモリ空間モデル２２３において、参照元となるオブジェクトＩＤを示し、参照先オブジェクト列６１２は、参照元オブジェクト列６１１が示すオブジェクトの参照先となるオブジェクトＩＤを示す。メモリ空間モデル２２３は、オブジェクト・アドレス対応テーブル１２６とオブジェクト対応テーブル６１０とを保持する。
【００６５】
（ＧＣ）
図８は、本発明の第１の実施形態のＧＣの概要を示すフローチャートである。
【００６６】
ＧＣ開始制御部１２１によってＧＣを開始するタイミングが判定され（ステップ４０１）、ＧＣ開始制御部１２１によってＧＣを開始するタイミングであると判定された場合、ＧＣが必要であるため、ＧＣが始まる。
【００６７】
例えば、ヒープ領域１１３の残りメモリ量を計測するために、ＶＭ１１１がヒープ残量計測部を備えており、ヒープ領域１１３の残りメモリ量が一定量になったとヒープ残量計測部によって判定された場合、ステップ４０１において、ＧＣ開始制御部１２１がＧＣを開始するタイミングであると判定する。
【００６８】
また例えば、時間を計測するために、ＶＭ１１１が経過時間計測部を備えており、経過時間計測部によって所定の時間が計測された場合、ステップ４０１において、ＧＣ開始制御部１２１がＧＣを開始するタイミングであると判定する。
【００６９】
なお、経過時間計測部は、前回ＧＣサーバ２００にメモリ空間更新情報を送信した時点、すなわち、前回図３におけるステップ４００において送信タイミングであると判定された時刻、又は、ステップ４０１においてＧＣタイミングであると判定された時刻から、所定の時間を計測してよい。また、アプリの起動から所定の時間を計測してもよい。
【００７０】
ＧＣが始まると、端末１００及びＧＣサーバ２００は、図３に示すメモリ空間モデル更新処理４２０（ステップ４０２〜ステップ４０７）を行う。なお、ステップ４０４において端末１００は、ＧＣサーバに、解放するオブジェクトを抽出することを要求するため、メモリ空間更新情報のｏｐｅｒａｔｉｏｎ要素１１０１に"ＧＣ"を格納する。
【００７１】
ステップ４０７において、ＧＣサーバ２００は、メモリ空間モデル２２３を走査し、不要なオブジェクトを取得する。
【００７２】
図９は、本発明の第１の実施形態のＧＣが必要なオブジェクトを取得する処理を示すフローチャートである。図９に示す処理は、図８に示すステップ４０７に相当する。
【００７３】
ステップ４０６においてメモリ空間更新情報によってメモリ空間モデル２２３が更新された後、ＧＣサーバ２００は、メモリ空間更新情報に示された削除する参照先オブジェクトＹを取得する（ステップ１０３１）。すなわち、ステップ１０３１においてＧＣサーバ２００は、メモリ空間更新情報のａｃｔｉｏｎ要素１１０５が"ｄｅｌ"である要素のｔｏ要素１１０４のオブジェクトＩＤ（オブジェクトＹ）を取得する。
【００７４】
その後２２０は、ステップ１０３１において取得されたオブジェクトＹを、メモリ空間モデル２２３において検索し、他のオブジェクトがオブジェクトＹを参照しているか否かを判定する（ステップ１０３２）。他のオブジェクトがオブジェクトＹを参照している場合、オブジェクトＹは不要ではなく、ＧＣされる必要はないため、ＧＣサーバ２００は、ステップ１０３１に戻る。
【００７５】
他のオブジェクトがオブジェクトＹを参照していない場合、オブジェクトＹは不要なオブジェクトであり、ＧＣされる必要がある。このため、ＧＣサーバ２００は、オブジェクトＹを解放オブジェクト情報のｆｒｅｅ要素１１０６に追加する（ステップ１０３３）。
【００７６】
その後ＧＣサーバ２００は、メモリ空間更新情報のａｃｔｉｏｎ要素１１０５が"ｄｅｌ"である要素が他にある場合、ステップ１０３１に戻り、ａｃｔｉｏｎ要素１１０５が"ｄｅｌ"である要素が他にない場合、処理を終了する。
【００７７】
ステップ４０７の結果、ＧＣサーバ２００は、取得された不要なオブジェクトＩＤを解放オブジェクト情報として端末１００に送信する（ステップ４０８）。端末１００はＧＣサーバ２００から解放オブジェクト情報が送信されるまでアプリ１１２を停止させる必要がない。
【００７８】
端末１００が解放オブジェクト情報をＧＣサーバ２００から受信すると（ステップ４０９）、解放オブジェクト情報処理部１２５は、受信した解放オブジェクト情報を処理し、オブジェクトＩＤに対応するオブジェクトをヒープ領域１１３から解放する（ステップ４１０）。
【００７９】
なお、ＧＣサーバ２００から送信される解放オブジェクト情報には、不要なオブジェクトのオブジェクトＩＤが含まれる。このため、解放オブジェクト情報処理部はステップ４１０において、オブジェクト・アドレス対応テーブル１２６によって、オブジェクトＩＤから解放するオブジェクトのアドレスを取得する。
【００８０】
また、ＧＣ開始制御部１２１は、ＧＣサーバ２００に備えられてもよい。ＧＣサーバ２００が、ＧＣ開始制御部１２１を備える場合、端末１００はＧＣサーバ２００に、メモリ使用量などの、ＧＣを開始するタイミングを判定するために必要な情報を、メモリ空間更新情報に付加して送る。そしてＧＣサーバ２００は、メモリ空間モデル２２３を更新するステップ（ステップ４０６）から始めてもよい。また、ＧＣサーバ２００が端末１００にＧＣ開始タイミングを通知するステップを追加し、端末１００の参照の変更箇所を見つけ出すステップ（ステップ４０２）から始めてもよい。
【００８１】
図１０は、本発明の第１の実施形態の解放オブジェクト情報の例を示す説明図である。
【００８２】
ｆｒｅｅ要素１１０６は、ステップ４０７において取得された、不要なオブジェクトＩＤを示す配列を含む。解放オブジェクト情報は、メモリ空間更新情報と同じくＪＳＯＮによって表記される。
【００８３】
さらに、第１の実施形態のオブジェクト・アドレス対応テーブル１２６は、ＧＣサーバ２００に備えられてよい。オブジェクト・アドレス対応テーブル１２６が、ＧＣサーバ２００に備えられる場合、メモリ空間更新情報及び解放オブジェクト情報には、オブジェクトＩＤの代わりにアドレスが含まれる。
【００８４】
（コンパクション）
ＧＣによって、メモリ空間内でオブジェクトの確保及び解放を繰り返すと、空きメモリが細分化され、メモリ空間に新しいオブジェクト領域を確保することが困難になる。そのため一般的なＶＭは、コンパクションをする。コンパクションは、オブジェクトを再配置することによってメモリ空間を整理し、空きメモリの細分化をなくす処理である。
【００８５】
ＧＣサーバ２００にコンパクション計算部を備えることによって、端末１００のヒープ領域１１３をコンパクションできる。コンパクション計算部は、オブジェクトを再配置する先の開始アドレス及びオブジェクトを移動する順序を算出する。
【００８６】
コンパクションする場合、メモリ空間更新情報は、オブジェクト間の参照情報だけでなく、コンパクションをする旨の指示、ヒープ領域１１３のサイズ、オブジェクトの開始アドレス、及びオブジェクトのサイズを含む。ＧＣサーバ２００は、コンパクション計算部による算出結果（コンパクション計算結果）として、オブジェクトの移動順序、移動先アドレス、及び、オブジェクトがもつ参照先のアドレスについての情報を端末１００に送信する。
【００８７】
端末１００は、受信したコンパクション計算結果に基づいて、オブジェクトを移動し、参照の状態を変更し、オブジェクト・アドレス対応テーブル１２６を更新する。なお、端末１００によって、オブジェクトがもつ参照の変更計算処理が行われてもよく、ＧＣサーバ２００から送信されるコンパクション計算結果から、オブジェクトが各々もつ当該オブジェクトの参照先のアドレスについての情報を除いてもよい。
【００８８】
図１１は、本発明の第１の実施形態のＧＣサーバ２００においてコンパクション計算をする場合のメモリ空間更新情報の例を示す説明図である。
【００８９】
図１１に示すｏｐｅｒａｔｉｏｎ要素１１０１には、ＧＣサーバ２００にコンパクションを要求するため、"ｃｏｍｐａｃｔ"が格納される。そして、ｈｅａｐＳｉｚｅ要素１１０７にはヒープ領域１１３のサイズが格納される。ｒｅｆ要素１１０２に含まれるａｃｔｉｏｎ要素１１０５が"ａｄｄ"である場合、参照先であるｔｏ要素１１０４に格納されるオブジェクトの開始アドレスをａｄｒｅｓｓ要素１１０８に、オブジェクトのサイズをｓｉｚｅ要素１１０９に格納する。
【００９０】
図１１に示すメモリ空間更新情報は、オブジェクトＡからオブジェクトＢへの参照を削除し、オブジェクトＡからオブジェクトＣへの参照を追加する情報を示し、また、オブジェクトＣの開始アドレスが"３００"であり、オブジェクトＣのサイズが"８０"であることを示す。
【００９１】
図１２は、本発明の第１の実施形態のコンパクション計算をする場合のメモリ空間モデル２２３に対応するオブジェクト情報テーブル６２０の例を示す説明図である。コンパクション計算をする場合、メモリ空間モデル２２３は、オブジェクト・アドレス対応テーブル１２６にサイズ列６２３を追加した、オブジェクト情報テーブル６２０を保持する。
【００９２】
オブジェクト情報テーブル６２０は、オブジェクトＩＤ列６２１、アドレス列６２２及びサイズ列６２３を含む。アドレス列６２２は、オブジェクトの開始アドレスを示し、サイズ列は、オブジェクトのサイズを示す。オブジェクトＩＤ列６２１及びアドレス列６２２は、オブジェクト・アドレス対応テーブル１２６のオブジェクトＩＤ列６０１及びアドレス列６０２に相当する。
【００９３】
図１２に示すオブジェクト情報テーブル６２０は、端末１００から送信されるメモリ空間更新情報によって更新される。また、前述のコンパクション計算部は、オブジェクト情報テーブル６２０を参照することによって、移動するオブジェクト及びオブジェクトの移動先を決定する。
【００９４】
なお、本実施形態のオブジェクト情報テーブル６２０は、アドレス列６２２の昇順にソートされる。これは、参照の基点となるオブジェクトは、一般的に小さいアドレスに配置されるためである。
【００９５】
図１３は、本発明の第１の実施形態のコンパクションをする場合の解放オブジェクト情報の例を示す説明図である。
【００９６】
ｍｏｖｅ要素１１１０には、移動させるオブジェクトの情報が配列によって格納され、オブジェクトを移動させる順に情報が格納される。ｎａｍｅ要素１１１１には、移動させるオブジェクトＩＤが格納され、ａｄｒｅｓｓ要素１１０８には、オブジェクトが移動する先のアドレスが格納される。
【００９７】
さらにオブジェクトを移動させるため、オブジェクトがもつ参照先のアドレスも、変更される必要がある。その変更された後の参照先のアドレスが、ｒｅｆ要素１１０２に配列によって格納される。ｒｅｆ要素１１０２は、［参照先の変更前アドレス，参照先の変更後アドレス］の表記によって、参照先のアドレスを示す。
【００９８】
図１３に示す解放オブジェクト情報によれば、オブジェクトＢは、"２００"番地を指す参照の値を"１４０"番地に変更され、"１００"番地を指す参照を"５０"番地に変更されることを示す。ｒｅｆ要素１１０２は、変更される参照の数だけ要素が格納される。
【００９９】
図１４は、本発明の第１の実施形態のコンパクション処理を示すフローチャートである。
【０１００】
ＧＣサーバ２００は、まず、メモリ空間モデル２２３を走査し、不要なオブジェクトを取得し、取得されたオブジェクトを解放オブジェクト情報のｆｒｅｅ要素１１０６に加える（ステップ１０４１）。その後、ＧＣサーバ２００は、オブジェクト情報テーブル６２０を複写することによって、コピー６３０を作成する（ステップ１０４２）。
【０１０１】
なお、コピー６３０には、オブジェクト情報テーブル６２０のオブジェクトＩＤ列６２１及びサイズ列６２３と同じ値が各々格納されるが、コピー６３０のアドレス列６２２は、値が格納されない。なお、ステップ１０４２においてオブジェクト情報テーブル６２０は、アドレス列６２２の昇順にソートされており、コピー６３０のオブジェクトＩＤ列６２１は、オブジェクト情報テーブル６２０のアドレス列６２２の昇順に抽出される。
【０１０２】
次にＧＣサーバ２００は、コンパクション済みアドレスに、"０"を格納する（ステップ１０４３）。コンパクション済みアドレスは、コンパクションが済んだアドレスを示す変数である。ＧＣサーバ２００は、アドレスが小さいオブジェクトから順にコンパクションするため、コンパクション済みアドレスを初期化するために、ステップ１０４３において"０"を格納する。
【０１０３】
次にＧＣサーバ２００は、オブジェクト情報テーブル６２０及びオブジェクト対応テーブル６１０を参照し、かつ参照元であるオブジェクトＸが存在するか否かを判定する（ステップ１０４４）。そして、参照元であるオブジェクトＸが存在する場合、ＧＣサーバ２００は、コピー６３０に基づいて、オブジェクトＸのオブジェクトＩＤを取得し、ステップ１０４５に移行する。ステップ１０４４において、参照元であるオブジェクトＸが存在しない場合、ＧＣサーバ２００は、ステップ１０５０に移行する。
【０１０４】
なお、ステップ１０４４の最初の実行において、ＧＣサーバ２００は、参照元であるオブジェクトのうち、アドレスが０か、０に近いオブジェクトを、オブジェクトＸとして取得する。これは、数字の最も小さいアドレスのオブジェクトからコンパクションを実行するためである。
【０１０５】
ステップ１０４５においてＧＣサーバ２００は、解放オブジェクト情報のｎａｍｅ要素１１１１にステップ１０４４において取得したオブジェクトＸのオブジェクトＩＤを格納する。またＧＣサーバ２００は、ステップ１０４５において、コピー６３０のオブジェクトＸのアドレス列６２２に、コンパクション済みアドレスが示す値を格納する。
【０１０６】
なお、ステップ１０４４の最初の実行において、ＧＣサーバ２００は、オブジェクトＸをコンパクション済みアドレスが示すアドレス、すなわちアドレス"０"に移動するため、解放オブジェクト情報のａｄｒｅｓｓ要素１１１１に"０"を格納する。これは、ＧＣサーバ２００が、コピー６３０のうち最もアドレスが小さいオブジェクトＸを、アドレス"０"に移動させるためである。
【０１０７】
また、ステップ１０４５においてＧＣサーバ２００は、コピー６３０を参照し、コンパクション済みアドレスにオブジェクトＸのサイズを格納する。これによって、次のオブジェクトがオブジェクトＸに連続して配置される。
【０１０８】
次にＧＣサーバ２００は、オブジェクト対応テーブル６１０を参照し、オブジェクトＸに対応する参照先オブジェクトＹが存在するか否かを判定する（ステップ１０４６）。ステップ１０４６において、オブジェクトＸに対応する参照先オブジェクトＹが存在しないと判定された場合、ＧＣサーバ２００は、ステップ１０４４に戻り、新たなオブジェクトＸが存在するか否かを判定する。
【０１０９】
ステップ１０４６において、オブジェクトＸに対応する参照先オブジェクトＹが存在すると判定された場合、ＧＣサーバ２００は、ステップ１０４７に移行する。ステップ１０４７においてＧＣサーバ２００は、コピー６３０を参照し、オブジェクトＹのアドレス列６２２に値が格納されていない場合、オブジェクトＹのアドレス列６２２にコンパクション済みアドレスの値を格納する（ステップ１０４７）。オブジェクトＹのアドレス列６２２に値が格納されている場合、ＧＣサーバ２００は、ステップ１０４８に移行する。
【０１１０】
また、オブジェクトＹのアドレス列６２２に値が格納されている場合、既に実行されたステップ１０４４〜ステップ１０４７の処理において格納されたオブジェクトＹのアドレスを変更しないために、ＧＣサーバ２００は、ステップ１０４８にそのまま移行する。
【０１１１】
そしてＧＣサーバ２００は、解放オブジェクト情報のオブジェクトＸのｒｅｆ要素１１０２に、"［オブジェクト情報テーブル６２０のオブジェクトＢのアドレス，コピー６３０のオブジェクトＢのアドレス］"を追加する（ステップ１０４８）。
【０１１２】
次にＧＣサーバ２００は、コピー６３０を参照し、コンパクション済みアドレスにオブジェクトＹのサイズを加算する（ステップ１０４９）。そしてＧＣサーバ２００は、ステップ１０４６に戻り、オブジェクトＸに他の参照先オブジェクトＹが存在するか否かを判定する。
【０１１３】
ステップ１０４６において、オブジェクトＸに他の参照先オブジェクトＹが存在しないと判定された場合、ＧＣサーバ２００は、ステップ１０４４に戻り、新たな参照元オブジェクトＸが存在するか否かを判定する。
【０１１４】
ステップ１０４４において、新たな参照元オブジェクトＸがないと判定された場合、ＧＣサーバ２００は、オブジェクト対応テーブル６１０の参照先オブジェクト列６１２に存在するが、参照元オブジェクト列６１１に存在しないオブジェクトＺを取得する。そして、ＧＣサーバ２００は、コピー６３０を参照し、オブジェクトＺのオブジェクトＩＤ列６２１の値を、解放オブジェクト情報のｎａｍｅ要素１１１１に格納し、オブジェクトＺのアドレス列６２２の値を解放オブジェクト情報のａｄｒｅｓｓ要素１１０８に格納する（ステップ１０５０）。
【０１１５】
ステップ１０５０において取得されるオブジェクトＺは、ステップ１０４４〜ステップ１０４９において、参照先オブジェクトＹとしてアドレスを指定されたものの、ステップ１０４５において、アドレスの変更を解放オブジェクト情報に記述していないオブジェクトである。
【０１１６】
ステップ１０５０の後、ＧＣサーバ２００は、オブジェクト情報テーブル６２０を削除し、コピー６３０を新たなオブジェクト情報テーブル６２０に置き換える（ステップ１０５１）。
【０１１７】
以上が、第１の実施形態のコンパクション処理である。
【０１１８】
一般的に、端末１００が計算機リソースの貧弱な携帯端末である場合、ＧＣ時に少ないリソースをＧＣに利用することになるため、アプリ１１２の動作が遅くなることがある。第１の実施形態によれば、ＧＣにおいてリソースの負担が大きいメモリ空間の走査処理を、別の計算機であるＧＣサーバ２００で行うため、端末１００のＧＣの負担を軽減できる。また、一般的にＧＣ走査中はオブジェクトの参照関係を変更しないために、アプリ１１２を停止する必要があるが、第１の実施形態によれば、ＧＣ走査をＧＣサーバ２００で行うため端末１００においてアプリ１１２を停止する必要がない。
【０１１９】
（第２の実施形態）
図１５は、本発明の第２の実施形態のシステム構成を示すブロック図である。
【０１２０】
第２の実施形態は、第１の実施形態におけるメモリ空間モデル２２３に、端末１００のヒープ領域１１３と同一のヒープ領域を構築する実施形態である。すなわち、ＧＣサーバ２００において、端末１００のヒープ領域１１３が再現される。
【０１２１】
第２の実施形態において、端末１００及びＧＣサーバ２００は、アドレスを直接やりとりするため、オブジェクト・アドレス対応テーブル１２６を備える必要がない。
【０１２２】
第２の実施形態の端末１００及びＧＣサーバ２００は、図３の処理を同様に行い、図８に示す第１の実施形態のＧＣと同様にＧＣを行う。図８に示すステップ４０１、ステップ４０７〜ステップ４１０は、第１の実施形態と第２の実施形態とで同じ処理である。
【０１２３】
第２の実施形態の変更箇所収集部１２２は、メモリ空間モデル更新処理４２０のステップ４０２において、カードマーキングなどを用いてオブジェクト単位又はページ単位で、ヒープ領域１１３における変更箇所を取得する。そしてメモリ空間更新情報生成部１２３は、変更がある毎にメモリ空間更新情報を生成し（ステップ４０３）、生成したメモリ空間更新情報をＧＣサーバ２００に送信する（ステップ４０４）。
【０１２４】
ＧＣサーバ２００は、メモリ空間更新情報を受信し（ステップ４０５）、メモリ空間モデル更新部２２２によって、オブジェクト単位又はページ単位でメモリ空間モデル２２３を置き換える（ステップ４０６）。メモリ空間更新情報には、ヒープ領域１１３において変更のあったオブジェクト又はメモリページ単位のデータと、それらの開始アドレスとが格納される。
【０１２５】
第１の実施形態と同じく、第２の実施形態において端末１００及びＧＣサーバ２００間で送受信するアドレスの情報は、相対アドレスを示すため、第２の実施形態のＧＣサーバ２００は、端末１００のヒープ領域１１３を再現することができる。
【０１２６】
第２の実施形態のＧＣ走査処理（ステップ４０７）において、ＧＣ走査部２２１は、端末１００のヒープ領域１１３と同じメモリ領域を構築したメモリ空間モデル２２３の参照の基点から、参照を辿り、辿れたオブジェクトのチェック領域にチェックを入れる。そして、参照の基点から辿れる参照を辿り、全ての参照を辿った後に、メモリ領域のオブジェクトの確認をする。その際に、オブジェクトのチェック領域にチェックがついていないものを不要なオブジェクトと判断し、チェックがついているオブジェクトに関してはチェックをはずす処理をする。
【０１２７】
図１６は、本発明の第２の実施形態のメモリ空間更新情報の例を示す説明図である。
【０１２８】
メモリ空間更新情報のａｄｒｅｓｓ要素１１０８には、ｄａｔａ要素１１１２に示されるオブジェクト等が配置される開始アドレスが格納され、ｄａｔａ要素には、更新されたオブジェクト又はメモリページの実体が格納される。
【０１２９】
図１７は、本発明の第２の実施形態の解放オブジェクト情報の例を示す説明図である。
【０１３０】
第２の実施形態の解放オブジェクト情報は、ｆｒｅｅ要素１１０６に、アドレスが格納される。
【０１３１】
第２の実施形態によれば、第１の実施形態よりも端末１００における処理の負荷が低減することができる。
【０１３２】
（第３の実施形態）
図１８は、本発明の第３の実施形態のシステム構成を示す説明図である。
【０１３３】
端末１００の入力部１０３を介して入力された入力値と、その入力値に対応して実行されたメソッド名とがある場合、第３の実施形態のＧＣサーバ２００は、入力部１０３を介して入力された入力値を、メモリ空間更新情報としてＧＣサーバ２００に送信する。
【０１３４】
第３の実施形態の端末１００のＶＭ１１１は、第１の実施形態のＶＭ１１１と比べて、変更箇所収集部１２２を備えず、入力情報取得部１２７を備える。入力情報取得部１２７は、入力部１０３からの入力を取得する。
【０１３５】
また、第３の実施形態のＧＣサーバ２００は、メモリ２１０上にＶＭ２２４を備え、ＶＭ２２４は、端末１００において実行されるアプリ１１２と同じアプリ２２５を実行する。ＶＭ２２４は、ＧＣ走査部２２１、メモリ空間モデル更新部２２２、及び、メモリ空間モデル２２３を備える。なお、ＧＣ走査部２２１、メモリ空間モデル更新部２２２、及び、メモリ空間モデル２２３は、メモリ２１０において実行されれば、ＶＭ２２４において実行されなくてもよい。
【０１３６】
第３の実施形態の端末１００及びサーバ２００は、図３に示す処理と同様の処理を行う。第３の実施形態における図３に示すメモリ空間モデル更新処理４２０は、後述する第３の実施形態のＧＣのメモリ空間モデル更新処理４２０と同じである。なお、第３の実施形態における図３に示すステップ４００の送信タイミングには、入力値を入力されたタイミングが含まれる。
【０１３７】
図１９は、本発明の第３の実施形態のＧＣを示すフローチャートである。
【０１３８】
第３の実施形態におけるステップ４０１は、第１の実施形態と同様であるが、入力値を入力されたタイミングにおいても、ＧＣ開始タイミングと判定してよい。
【０１３９】
第３の実施形態のＧＣには、図８に示す第１の実施形態のＧＣのうち、ステップ４０２の処理が除かれる。これは、入力値及びメソッドをＧＣサーバ２００に送るため、ヒープ領域１１３の変更箇所を取得する必要がないからである。また、ステップ４０３において、第３の実施形態のメモリ空間更新情報生成部１２３は、入力部１０３からの入力値を含んだメモリ空間更新情報を生成する。
【０１４０】
図２０Ａは、本発明の第３の実施形態のアプリ１１２がメソッドを実行した際の処理を示すフローチャートである。
【０１４１】
端末１００のアプリ１１２は、メソッドの実行タイミングを判定する（ステップ１０６１）。例えばアプリ１１２は、入力部１０３を介して入力値が入力されることによって、引数を取得した際に、メソッドの実行タイミングであると判定する。
【０１４２】
次にアプリ１１２は、メソッド名及びステップ１０６１において取得した引数を、メモリ１１０に備わるバッファにコピーする（ステップ１０６２）。そしてアプリ１１２は、メソッドの実行を開始する（ステップ１０６３）。メソッドの実行が終了したことを判定した後（ステップ１０６４）、アプリ１１２は、ステップ１０６２においてコピーしたバッファの内容をエンキューする。
【０１４３】
図２０Ｂは、本発明の第３の実施形態のメモリ空間更新情報の生成処理を示すフローチャートである。図２０Ｂに示す処理は、図１９に示すステップ４０３に相当する。
【０１４４】
メモリ空間更新情報生成部１２３は、ステップ１０６５においてアプリ１１２によってエンキューされたキューから、メソッド及び引数のセットを、デキューする（ステップ１０６６）。そして、ステップ１０６６においてデキューされたメソッドの名前及び引数を、メモリ空間更新情報のｍｅｔｈｏｄ要素１１１３及びｐａｒａｍｅｔｅｒ要素１１１４に格納する（ステップ１０６７）。
【０１４５】
図２１は、本発明の第３の実施形態のメモリ空間更新情報を示す説明図である。
【０１４６】
図２１に示すメモリ空間更新情報は、ｅｘｅｃｕｔｅ要素に、ｍｅｔｈｏｄ要素１１１３及びｐａｒａｍｅｔｅｒ要素１１１４を含む。図２０Ｂに示すステップ１０６６においデキューされた値が、ステップ１０６７においてｍｅｔｈｏｄ要素１１１３及びｐａｒａｍｅｔｅｒ要素１１１４に格納される。
【０１４７】
図２１に示す例では、ｍｅｔｈｏｄ要素１１１３Ａ及びｐａｒａｍｅｔｅｒ要素１１１４Ａは、メソッド名が"ｆｕｎｃｔｉｏｎＡ"であり、引数が"１００"であることを示す。ｍｅｔｈｏｄ要素１１１３Ｂ及びｐａｒａｍｅｔｅｒ要素１１１４Ｂは、メソッド名が"ｆｕｎｃｔｉｏｎＢ"であることを示し、引数にオブジェクトＡ及びオブジェクトＢの実データを含む。
【０１４８】
なお、一つのメソッドを複数の引数によって実行する場合、メモリ空間更新情報生成部１２３は、ｐａｒａｍｅｔｅｒ要素１１１４Ｂのように、引数を格納する。
【０１４９】
図２０Ｂに示す処理の後端末１００は、ステップ４０４においてメモリ空間更新情報をＧＣサーバ２００に送信し、ＧＣサーバ２００は、ステップ４０５においてメモリ空間更新情報をＧＣサーバ２００に受信する。そして、メモリ空間モデル更新部２２２は、受信したメモリ空間更新情報のｍｅｔｈｏｄ要素１１１３及びｐａｒａｍｅｔｅｒ要素に基づいて、２２５を実行することによって、メモリ空間モデル２２３を更新する（ステップ４０６）。
【０１５０】
その後、ＧＣ走査部２２１は、第１の実施形態と同じくメモリ空間モデル２２３を走査し（ステップ４０７）、ステップ４０７において生成された解放オブジェクト情報を端末１００に送信する。そして、端末１００は、第１の実施形態と同じくステップ４０９及びステップ４１０を実行する。
【０１５１】
第３の実施形態によれば、メモリ空間の変更箇所を端末１００で見つけ出す必要がないため、端末１００における処理の負荷を軽減できる。
【０１５２】
（第４の実施形態）
第４の実施形態において、第１の実施形態におけるヒープ領域１１３は、ｎｅｗ領域とｏｌｄ領域との二つの領域に分けられる。そして第４の実施形態において、ｎｅｗ領域のＧＣは端末１００において行われ、ｏｌｄ領域のＧＣ走査はＧＣサーバ２００において行われる。
【０１５３】
第４の実施形態においてｎｅｗ領域をＧＣする場合、端末１００は、ｏｌｄ領域におけるオブジェクトの参照情報とｏｌｄ領域のオブジェクトに対する参照情報とを、メモリ空間更新情報として、ＧＣサーバ２００に送信する。
【０１５４】
オブジェクトがアプリ１１２によって生成される場合、ｎｅｗ領域には、オブジェクトに必要な領域が確保される。ｎｅｗ領域の空き領域が少なくなると、端末１００はｎｅｗ領域のＧＣを行う。端末１００は、特定回数ｎｅｗ領域のＧＣを繰り返しても解放されないオブジェクトを、ｏｌｄ領域へ移動する。このｎｅｗ領域からｏｌｄ領域へ移動する処理は、プロモーションと呼ばれる。
【０１５５】
第４の実施形態において、端末１００は、ｏｌｄ領域の空き領域が少なくなるとｏｌｄ領域のＧＣを開始し、ＧＣサーバ２００の計算機リソースを用いてｏｌｄ領域のＧＣを行う。
【０１５６】
図２２は、本発明の第４の実施形態のシステム構成を示す説明図である。
【０１５７】
第４の実施形態は、第１の実施形態の端末１００に、ｎｅｗ領域ＧＣ部１２８、及び、プロモーション処理部１２９が追加される。また、第４の実施形態の端末１００は、送信タイミング制御部１２４をもたない。そして、第４の実施形態のヒープ領域１１３は、ｎｅｗ領域とｏｌｄ領域とを含む。端末１００の他の構成要素、及びＧＣサーバ２００の構成要素は、第１の実施形態と同じである。
【０１５８】
なお、第４の実施形態の端末１００及びサーバ２００は、図３に示す処理を行うが、ステップ４０２において、端末１００はｏｌｄ領域の参照の変更箇所を抽出する。そして、後述するＧＣ処理におけるステップ４０４と同様に、ｏｌｄ領域の参照の変更箇所と、ｎｅｗ領域からｏｌｄ領域への参照の変更箇所とを、ＧＣサーバ２００に送る。
【０１５９】
図２３は、本発明の第４の実施形態のｎｅｗ領域のＧＣを示すフローチャートである。
【０１６０】
ＧＣ開始制御部１２１は、ＧＣ開始タイミングを判定し（ステップ４０１）、ｎｅｗ領域をＧＣする必要があると判定した場合、変更箇所収集部１２２がｎｅｗ領域、ｏｌｄ領域の参照の変更箇所を抽出する（ステップ４０２）。なおＧＣ開始制御部１２１は、ｎｅｗ領域の残りメモリなどを参照し、ＧＣ開始タイミングを判定する。また、ステップ４０２における変更箇所の抽出には、第１の実施形態と同じ方法を用いる。
【０１６１】
その後、ｎｅｗ領域ＧＣ部１２８は、ｎｅｗ領域をコピーＧＣする（ステップ４１１）。さらに、プロモーション処理部１２９は、プロモーションすべきオブジェクトの有無を判定し、プロモーションすべきオブジェクトがあればプロモーションを行う（ステップ４１２）。なお、参照の変更箇所を抽出するステップ処理（ステップ４０２）から、プロモーションステップ（ステップ４１２）までを端末ＧＣ４２１と呼ぶ。
【０１６２】
次に、メモリ空間更新情報生成部１２３は、ステップ４０２において変更箇所収集部１２２によって抽出された参照情報から、メモリ空間更新情報を生成する（ステップ４０３）。そして、ＧＣサーバ２００にメモリ空間更新情報を送信する（ステップ４０４）。ステップ４０４においてメモリ空間更新情報生成部１２３は、オブジェクト・アドレス対応テーブル１２６を利用し、アドレスからオブジェクトＩＤへ変換する。
【０１６３】
ＧＣサーバ２００が、メモリ空間更新情報を受信すると（ステップ４０５）、さらに、ＧＣサーバ２００のメモリ空間モデル更新部２２２は、メモリ空間更新情報を用いてメモリ空間モデル２２３を更新する（ステップ４０６）。そして、ＧＣ走査部２２１は、メモリ空間モデル２２３を走査する（ステップ４０７）。
【０１６４】
なお、第４の実施形態のＧＣサーバ２００は、ステップ４０６において、後述するメモリ空間更新情報から、ｎｅｗ領域のオブジェクトから参照されるｏｌｄ領域のオブジェクトの情報を取得する。
【０１６５】
図２４は、本発明の第４の実施形態のｏｌｄ領域のＧＣを示すフローチャートである。
【０１６６】
ＧＣ開始制御部１２１は、ＧＣ開始タイミングを判定し（ステップ４０１）、ｏｌｄ領域をＧＣする必要があると判定した場合、図２３に示す端末ＧＣ４２１を行う。
【０１６７】
なお、ｏｌｄ領域のＧＣ処理におけるＧＣ開始タイミングは、ｏｌｄ領域の残りメモリが所定の量よりも少なくなった場合などである。また、図２３に示すｎｅｗ領域の端末ＧＣ４２１において、プロモーション４１２が実行された場合、又は、ｏｌｄ領域が変更された場合、図２４に示すステップ４０３以降が実行されてもよい。
【０１６８】
その後、メモリ空間更新情報生成部１２３がメモリ空間更新情報を生成し（ステップ４０３）、ＧＣサーバ２００に送信する（ステップ４０４）。ステップ４０４においてメモリ空間更新情報生成部１２３は、オブジェクト・アドレス対応テーブル１２６を利用し、アドレスからオブジェクトＩＤへ変換する。
【０１６９】
ＧＣサーバ２００が、メモリ空間更新情報を受信すると（ステップ４０５）、メモリ空間モデル更新部２２２は、メモリ空間モデル２２３を更新する（ステップ４０６）。ＧＣ走査部２２１がメモリ空間モデル２２３を走査し（ステップ４０７）、不要なオブジェクトを抽出する。
【０１７０】
なお、ステップ４０７においてＧＣ走査部２２１は、ステップ４０６において取得した、ｎｅｗ領域のオブジェクトから参照されるｏｌｄ領域のオブジェクトを、解放対象外とし、不要なオブジェクトとして抽出しない。これは、ｎｅｗ領域のオブジェクトから参照されるｏｌｄ領域のオブジェクトの参照情報は、ｏｌｄ領域の参照情報には入っておらず、ＧＣサーバ２００が、ｎｅｗ領域から参照されるｏｌｄ領域のオブジェクトを解放する対象としてしまう可能性があるためである。
【０１７１】
その後、不要なオブジェクトＩＤを解放オブジェクト情報に格納し、ＧＣサーバ２００は、解放オブジェクト情報を端末１００に送信する（ステップ４０８）。
【０１７２】
ステップ４０７において、ＧＣ走査部２２１は、メモリ空間更新情報に基づいて、ｎｅｗ領域からｏｌｄ領域を参照するオブジェクトを、必要なオブジェクトとし、不要なオブジェクトに含めない。
【０１７３】
端末１００が、解放オブジェクト情報を受信すると（ステップ４０９）、解放オブジェクト情報処理部１２５は、オブジェクト・アドレス対応テーブル１２６を利用して、ｏｌｄ領域の不要なオブジェクトを解放する（ステップ４１０）。
【０１７４】
図２５は、本発明の第４の実施形態のメモリ空間更新情報の例を示す説明図である。
【０１７５】
第４の実施形態のメモリ空間更新情報は、第１の実施形態のメモリ空間更新情報に、ｅｘｒｅｆ要素１１１５を追加する。ｅｘｒｅｆ要素１１１５には、変更されたｏｌｄ領域以外からｏｌｄ領域を参照するオブジェクト情報（すなわち、ｎｅｗ領域からｏｌｄ領域を参照するオブジェクト情報）が、配列によって格納される。
【０１７６】
ｆｒｏｍ要素１１０３には参照元オブジェクトＩＤが格納され、ｔｏ要素１１０４には参照先オブジェクトＩＤが格納される。ａｃｔｉｏｎ要素１１０５には、その参照が端末ＧＣ４２１によって削除された場合、"ｄｅｌ"が格納され、端末ＧＣ４２１によって追加された場合、"ａｄｄ"が格納される。図２５に示す例によれば、オブジェクトＢはｏｌｄ領域以外（ｎｅｗ領域）から参照されているため、ＧＣサーバ２００において、オブジェクトＢを解放してはいけないことを示す。
【０１７７】
本実施形態を用いれば、ｎｅｗ領域の情報は送信しないため、通信量を削減できる。
【０１７８】
（第５の実施形態）
第５の実施形態は通信帯域などに従って、複数のＧＣ種別を使う実施形態である。例えば本発明の第１の実施形態は、第２の実施形態と比べて通信量は少なくなるが、端末の計算負荷が高くなる特徴があり、通信帯域及び端末の性能によって適切なＧＣ種別が異なる。
【０１７９】
図２６は、本発明の第５の実施形態のシステム構成を示すブロック図である。
【０１８０】
第５の実施形態のＧＣサーバ２００は、第１の実施形態のＧＣサーバ２００に、ＧＣ種別判定部２２６と通信帯域測定部２２７とを加えたサーバである。また、第５の実施形態の端末１００は、第１の実施形態の端末１００に、通信帯域測定部１３０を加えた端末である。
【０１８１】
ＧＣ種別判定部２２６は、ＧＣサーバ２００及び端末１００間の通信帯域、及び、端末１００のＣＰＵ処理性能を示す情報を取得し、取得した情報に基づいて、適切なＧＣ種別を選択する。通信帯域測定部２２７は、お互いに連携し、ＧＣサーバ２００及び端末１００間の通信帯域を測定する。
【０１８２】
図２７は、本発明の第５の実施形態の起動時の処理を示すフローチャートである。
【０１８３】
アプリ１１２は、起動すると（ステップ１００１）、メモリ１１０にヒープ領域１１３を確保し（ステップ１００２）、ＧＣサーバ２００と端末１００のコネクションを確立する（ステップ１００３、ステップ１０１１）。次に、端末１００は、ＩＰアドレス、端末１００のＣＰＵ１０１及びメモリ１１１等の情報、並びに、ユーザ情報などのアプリ１１２の情報を、ＧＣサーバ２００に送る（ステップ１００４）。
【０１８４】
ＧＣサーバ２００は、アプリ１１２の情報を受信すると、アプリ１１２の情報に基づいて、端末１００がＧＣサーバ２００を利用してよいか否かを判定する（ステップ１０１２）。端末１００がＧＣサーバ２００を利用不可である場合、端末１００に、不可の通知をする。
【０１８５】
端末１００がＧＣサーバ２００を利用してよい場合、通信帯域測定部２２７は、ＧＣサーバ２００と端末１００の通信帯域を測定する（ステップ１０７２）。次に、ＧＣ種別判定部２２６は、ステップ１０７２において測定された通信帯域の結果と、アプリ１１２の情報に基づいて、適切なＧＣ種別を判定し、ＧＣ種別に対応したメモリ空間モデル２２３の準備と、アプリ１１２を一意に識別可能なアプリＩＤを生成する（ステップ１０１３）。
【０１８６】
その後、ＧＣサーバ２００は、準備完了通知にアプリＩＤとＧＣ種別とを格納し、準備完了通知を端末１００に送信する（ステップ１０１４）。端末１００は、準備完了通知を受信すると（ステップ１００５）、アプリ１１２のクラスをロードし（ステップ１００６）、アプリの実行を開始する（ステップ１００７）。アプリの実行中は（ステップ１００８）ＧＣ種別に従ったＧＣの通信を行う（ステップ１０１５）。
【０１８７】
第５の実施形態によれば、ネットワーク３００の通信帯域、又は端末１００の処理能力に従って、本発明の各実施形態を選択することができ、より柔軟にＧＣ処理をすることができる。
【０１８８】
さらに、第１の実施形態〜第４の実施形態によれば、端末１００はＧＣサーバ２００から解放オブジェクト情報が送信されるまでアプリ１１２を停止させる必要がない。
【０１８９】
なお、本発明の第１〜第５の実施形態は、すべて同じシステムにおいて実装可能である。例えば、ＧＣサーバ２００は、第１の実施形態と第４の実施形態との機能を備えることが可能である。
【０１９０】
特許請求の範囲に記載した以外の本発明の観点の代表的なものとして、次のものがあげられる。
【０１９１】
（１）少なくとも一つの端末と、ネットワークを介して前記端末に接続されたサーバとを備える計算機システムであって、前記端末及び前記サーバは、プロセッサとメモリとを各々に備え、
前記端末及びサーバは、各々に備わるプロセッサによってアプリケーションを実行し、
前記端末に備わるメモリは、前記アプリケーションが実行される際に、前記アプリケーションによって用いられる複数のオブジェクトを含み、
前記端末は、
前記アプリケーションへの入力値と、前記入力値に対応して実行されるメソッド名を取得し、
前記取得された入力値とメソッド名とを前記サーバに送信し、
前記サーバは、
前記送信された入力値とメソッド名とによって、前記アプリケーションを実行し、
前記サーバに備わるメモリは、前記アプリケーションが実行される際に、前記アプリケーションによって用いられる複数のオブジェクトを含み、
前記サーバは、
前記サーバに備わるメモリに基づいて、前記端末に備わるメモリから解放するオブジェクトを抽出し、
前記抽出された解放するオブジェクトを示す情報を、前記端末に送信することを特徴とする。
【０１９２】
（２）（１）において、前記端末は、入力装置を備え、
前記アプリケーションへ入力値が、入力装置を介して入力された場合に、前記入力値とメソッド名とを前記サーバに送信することを特徴とする。
【符号の説明】
【０１９３】
１００  端末
１０１  ＣＰＵ
１１０  メモリ
１０４  通信部
１０３  入力部
１０２  出力部
２００  ＧＣサーバ
２０１  ＣＰＵ
２１０  メモリ
２０４  通信部
２０３  入力部
２０２  出力部
１１１  ＶＭ
１２１  ＧＣ開始制御部
１２２  変更箇所収集部
１２３  メモリ空間更新情報生成部
１２４  送信タイミング制御部
１２５  解放オブジェクト情報処理部
１２６  オブジェクト・アドレス対応テーブル
２２３  メモリ空間モデル
２２１  ＧＣ走査部
２２２  メモリ空間モデル更新部
３００  ネットワーク
【図１】
2011232919.tif 000003
【図２】
2011232919.tif 000004
【図３】
2011232919.tif 000005
【図４Ａ】
2011232919.tif 000006
【図４Ｂ】
2011232919.tif 000007
【図５】
2011232919.tif 000008
【図６】
2011232919.tif 000009
【図７】
2011232919.tif 000010
【図８】
2011232919.tif 000011
【図９】
2011232919.tif 000012
【図１０】
2011232919.tif 000013
【図１１】
2011232919.tif 000014
【図１２】
2011232919.tif 000015
【図１３】
2011232919.tif 000016
【図１４】
2011232919.tif 000017
【図１５】
2011232919.tif 000018
【図１６】
2011232919.tif 000019
【図１７】
2011232919.tif 000020
【図１８】
2011232919.tif 000021
【図１９】
2011232919.tif 000022
【図２０Ａ】
2011232919.tif 000023
【図２０Ｂ】
2011232919.tif 000024
【図２１】
2011232919.tif 000025
【図２２】
2011232919.tif 000026
【図２３】
2011232919.tif 000027
【図２４】
2011232919.tif 000028
【図２５】
2011232919.tif 000029
【図２６】
2011232919.tif 000030
【図２７】
2011232919.tif 000031