(57)【要約】【課題】あるプロセス上で動作するアプリケーションに対し、プロセスに割り当てられているヒープ領域の連続する空き容量以上の領域を使用可能とする技術を提供する。【解決手段】判定部４１は、ウェブサーバ３から提供されるウェブプロセス２０内で実行されるユーザアプレット８において、第１のデータを保存する旨の要求を受け付けると、ユーザアプレット８のヒープ領域の空き容量を参照し、ユーザアプレット８のヒープ領域に第１のデータを保存することができるか否かを判定する。判定部４１が、ユーザアプレット８のヒープ領域に第１のデータを保存することができないと判定した場合は、保存処理部４２は、ユーザアプレット８に記憶されている第２のデータを、プロセス３０内で動作し、ユーザアプレット８とともにウェブサーバ３から提供される保存用アプレット９のヒープ領域に移動させてから、第１のデータをユーザアプレット８のヒープ領域に保存させる。【選択図】図２
2013246783.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して相互に接続されているサーバ装置とクライアント装置とを有する情報処理システムであって、
前記サーバ装置は、
前記クライアント装置において第１のプロセス内で実行される第１のアプリケーションと、該第１のプロセスとは異なる第２のプロセス内で動作する第２のアプリケーションとを記憶する記憶部と、
前記クライアント装置から前記第１のアプリケーションが要求された場合には、該第１のアプリケーション及び前記第２のアプリケーションを該クライアント装置に提供する提供部と、
を備え、
前記クライアント装置は、
前記第１のアプリケーションにおいて、第１のデータを保存する旨の要求を受け付けると、該第１のアプリケーションに割り当てられているメモリ領域のうち、ヒープ領域の空き容量を参照し、該第１のアプリケーションのヒープ領域に該第１のデータを保存することができるか否かを判定する判定部と、
前記判定部が、前記第１のアプリケーションのヒープ領域に前記第１のデータを保存することができないと判定した場合は、前記第１のアプリケーションのヒープ領域に記憶されている第２のデータを前記第２のアプリケーションのヒープ領域に移動させてから、該第１のデータを第１のアプリケーションのヒープ領域に保存させる保存処理部と、
を備えることを特徴とする情報処理システム。
【請求項２】
ネットワークを介して接続されているクライアント装置からの要求に応じて、保有するアプリケーションを該クライアント装置に提供するサーバ装置であって、
前記クライアント装置において第１のプロセス内で実行される第１のアプリケーションと、該第１のプロセスとは異なる第２のプロセス内で動作する第２のアプリケーションとを記憶する記憶部と、
前記クライアント装置から前記第１のアプリケーションが要求された場合には、該第１のアプリケーション及び前記第２のアプリケーションを該クライアント装置に提供する提供部と、
を備えることを特徴とするサーバ装置。
【請求項３】
ネットワークを介して接続されているサーバ装置が提供するアプリケーションを実行するクライアント装置であって、
前記サーバ装置から提供される第１のプロセス内で実行される第１のアプリケーションにおいて、第１のデータを保存する旨の要求を受け付けると、該第１のアプリケーションに割り当てられているメモリ領域のうち、ヒープ領域の空き容量を参照し、該第１のアプリケーションのヒープ領域に該第１のデータを保存することができるか否かを判定する判定部と、
前記判定部が、前記第１のアプリケーションのヒープ領域に前記第１のデータを保存することができないと判定した場合は、前記第１のアプリケーションのヒープ領域に記憶されている第２のデータを、前記第１のプロセスとは異なる第２のプロセス内で動作し、該第１のアプリケーションとともに前記サーバ装置から提供される第２のアプリケーションのヒープ領域に移動させてから、該第１のデータを第１のアプリケーションのヒープ領域に保存させる保存処理部と、
を備えることを特徴とするクライアント装置。
【請求項４】
前記判定部は、前記第１のアプリケーションにおいて、前記第２のデータを取り出す旨の要求を受け付けると、該第１のアプリケーションのヒープ領域の空き容量を参照し、該第１のアプリケーションのヒープ領域に該第２のデータを保存することができるか否かを判定し、
前記保存処理部は、前記第１のアプリケーションのヒープ領域に前記第２のデータを保存することができないと判定した場合は、前記第１のアプリケーションのヒープ領域に記憶されている第３のデータを前記第２のアプリケーションのヒープ領域に移動させてから、該第２のデータを第１のアプリケーションのヒープ領域に保存させる
ことを特徴とする請求項３記載のクライアント装置。
【請求項５】
前記保存処理部において、前記第２のアプリケーションのヒープ領域へのデータの移動を伴うデータの保存処理及びデータの取り出し処理を実行した場合には、前記第１及び第２のアプリケーションのヒープ領域に記憶されているデータごとの保存先を含むデータ管理情報を更新する管理部と、
を更に備えることを特徴とする請求項４記載のクライアント装置。
【請求項６】
前記管理情報は、各データへのアクセス回数を更に含み、
前記保存処理部は、前記アクセス回数を参照して、前記第２のアプリケーションのヒープ領域に移動させるデータを決定する
ことを特徴とする請求項５記載のクライアント装置。
【請求項７】
前記第２のアプリケーションは、前記第１のアプリケーションの起動に伴って起動される
ことを特徴とする請求項３から６のいずれか１項に記載のクライアント装置。
【請求項８】
前記第２のアプリケーションは、オペレーティングシステムの起動に伴って起動される
ことを特徴とする請求項３から６のいずれか１項に記載のクライアント装置。
【請求項９】
コンピュータを、ネットワークを介して接続されているサーバ装置が提供するアプリケーションを実行するクライアント装置として動作させるプログラムであって、
前記サーバ装置から提供される第１のプロセス内で実行される第１のアプリケーションにおいて、第１のデータを保存する旨の要求を受け付けると、該第１のアプリケーションに割り当てられているメモリ領域のうち、ヒープ領域の空き容量を参照し、該第１のアプリケーションのヒープ領域に該第１のデータを保存することができるか否かを判定する判定処理と、
前記判定処理において、前記第１のアプリケーションのヒープ領域に前記第１のデータを保存することができないと判定した場合は、前記第１のアプリケーションのヒープ領域に記憶されている第２のデータを、前記第１のプロセスとは異なる第２のプロセス内で動作し、該第１のアプリケーションとともに前記サーバ装置から提供される第２のアプリケーションのヒープ領域に移動させてから、該第１のデータを第１のアプリケーションのヒープ領域に保存させる保存処理と、
を備えることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して相互に接続されているサーバ装置とクライアント装置とを有する情報処理システムにおいて、クライアント装置においてプロセスを実行するときのメモリを管理する技術に関する。
【背景技術】
【０００２】
コンピュータにおけるメモリの管理方法の一つに、プロセスの実行時にメモリを動的に割り当て、領域の割り当てが不要になると、メモリを解放する技術が存在する。Ｊａｖａ（登録商標）においては、仮想マシンであるＪａｖａＶＭ（Java Virtual Machine、登録商標）が動的メモリ割り当てを実行し、不要となった領域については、ガベージコレクションにより、自動的に解放を行っている。
【０００３】
ＪａｖａＶＭが組み込まれているブラウザに対しては、所定のメモリ領域が割り当てられる。そして、例えば仮想マシンであるＪａｖａＶＭは、ＪａｖａＶＭ上で実行されるＪａｖａアプレットに対しては、ブラウザに割り当てられているメモリのうち、ヒープ領域内の連続する空き領域から獲得してこれを割り当てている。すなわち、図８に示すとおり、従来技術によれば、ヒープ領域内に必要な容量分の連続する空き領域が存在しない場合は、Ｊａｖａアプレットに対してヒープ領域を使用させることができない。
【０００４】
メモリの容量を確保して割り当てを行う技術に関しては、例えば、Ｊａｖａプログラムによって、ガベージコレクションの対象外のメモリに関して、配置された全データあるいは全データのうちの参照関係の起点データに対して、対象外のメモリ以外に配置されたデータからの参照がない場合には、その対象外メモリを解放可能と判断する技術が開示されている（例えば、特許文献１）。
【０００５】
また、作業メモリのヒープ領域にロードされた画像データが最後に参照されてからの経過時間が所定の閾値以上の場合には、ヒープ領域内の画像データの情報量を削減する技術について開示されている（例えば、特許文献２）。計算機においてプロセスを実行するときに、複数スレッドが生成するオブジェクトのメモリ配置先を動的に制御して、使用頻度の高いオブジェクト同士を近傍に配置する技術についても開示されている（例えば、特許文献３）。デジタルカメラにおいて、カメラ部内の一時記憶機能中に撮影画像データ記憶に必要な空き容量がある限りは撮影可能とし、一時記憶機能中の画像データについては１コマ分ごとに記憶部に伝送・記憶していき、記憶が完了すると消去する技術についても開示されている（例えば、特許文献４）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１０−２２５０３３号公報
【特許文献２】特開２００６−１２７２８０号公報
【特許文献３】特開２００４−７８６３６号公報
【特許文献４】特開２００８−４９８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述のとおり、従来技術によれば、仮想マシン上で動作するアプレットのように、あるプロセス上で動作するアプリケーションに対しては、プロセスに割り当てられているヒープ領域のうち、連続する空き容量以上の領域を割り当てることができない。
【０００８】
本発明は、あるプロセス上で動作するアプリケーションに対し、プロセスに割り当てられているヒープ領域の連続する空き容量以上の領域を使用可能とする技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一態様に係る情報処理システムによれば、ネットワークを介して相互に接続されているサーバ装置とクライアント装置とを有する情報処理システムであって、前記サーバ装置は、前記クライアント装置において第１のプロセス内で実行される第１のアプリケーションと、該第１のプロセスとは異なる第２のプロセス内で動作する第２のアプリケーションとを記憶する記憶部と、前記クライアント装置から前記第１のアプリケーションが要求された場合には、該第１のアプリケーション及び前記第２のアプリケーションを該クライアント装置に提供する提供部と、を備え、前記クライアント装置は、前記第１のアプリケーションにおいて、第１のデータを保存する旨の要求を受け付けると、該第１のアプリケーションに割り当てられているメモリ領域のうち、ヒープ領域の空き容量を参照し、該第１のアプリケーションのヒープ領域に該第１のデータを保存することができるか否かを判定する判定部と、前記判定部が、前記第１のアプリケーションのヒープ領域に前記第１のデータを保存することができないと判定した場合は、前記第１のアプリケーションのヒープ領域に記憶されている第２のデータを前記第２のアプリケーションのヒープ領域に移動させてから、該第１のデータを第１のアプリケーションのヒープ領域に保存させる保存処理部と、を備えることを特徴とする。
【００１０】
本発明の一態様に係るサーバ装置によれば、ネットワークを介して接続されているクライアント装置からの要求に応じて、保有するアプリケーションを該クライアント装置に提供するサーバ装置であって、前記クライアント装置において第１のプロセス内で実行される第１のアプリケーションと、該第１のプロセスとは異なる第２のプロセス内で動作する第２のアプリケーションとを記憶する記憶部と、前記クライアント装置から前記第１のアプリケーションが要求された場合には、該第１のアプリケーション及び前記第２のアプリケーションを該クライアント装置に提供する提供部と、を備えることを特徴とする。
【００１１】
本発明の一態様に係るクライアント装置によれば、ネットワークを介して接続されているサーバ装置が提供するアプリケーションを実行するクライアント装置であって、前記サーバ装置から提供される第１のプロセス内で実行される第１のアプリケーションにおいて、第１のデータを保存する旨の要求を受け付けると、該第１のアプリケーションに割り当てられているメモリ領域のうち、ヒープ領域の空き容量を参照し、該第１のアプリケーションのヒープ領域に該第１のデータを保存することができるか否かを判定する判定部と、前記判定部が、前記第１のアプリケーションのヒープ領域に前記第１のデータを保存することができないと判定した場合は、前記第１のアプリケーションのヒープ領域に記憶されている第２のデータを、前記第１のプロセスとは異なる第２のプロセス内で動作し、該第１のアプリケーションとともに前記サーバ装置から提供される第２のアプリケーションのヒープ領域に移動させてから、該第１のデータを第１のアプリケーションのヒープ領域に保存させる保存処理部と、を備えることを特徴とする。
【００１２】
本発明の一態様に係るプログラムによれば、コンピュータを、ネットワークを介して接続されているサーバ装置が提供するアプリケーションを実行するクライアント装置として動作させるプログラムであって、前記サーバ装置から提供される第１のプロセス内で実行される第１のアプリケーションにおいて、第１のデータを保存する旨の要求を受け付けると、該第１のアプリケーションに割り当てられているメモリ領域のうち、ヒープ領域の空き容量を参照し、該第１のアプリケーションのヒープ領域に該第１のデータを保存することができるか否かを判定する判定処理と、前記判定処理において、前記第１のアプリケーションのヒープ領域に前記第１のデータを保存することができないと判定した場合は、前記第１のアプリケーションのヒープ領域に記憶されている第２のデータを、前記第１のプロセスとは異なる第２のプロセス内で動作し、該第１のアプリケーションとともに前記サーバ装置から提供される第２のアプリケーションのヒープ領域に移動させてから、該第１のデータを第１のアプリケーションのヒープ領域に保存させる保存処理と、を備えることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、あるプロセス上で動作するアプリケーションにおいて、プロセスに割り当てられているヒープ領域の連続する空き容量以上の領域を使用可能となる。
【図面の簡単な説明】
【００１４】
【図１】実施形態に係る情報処理システムの構成図である。
【図２】実施形態に係る仮想メモリの構成図である。
【図３】ユーザアプレットのデータ保存時の動作を説明する図である。
【図４Ａ】実施形態に係る情報処理装置によるデータの保存処理を示したフローチャート（その１）である。
【図４Ｂ】実施形態に係る情報処理装置によるデータの保存処理を示したフローチャート（その２）である。
【図５】データ管理テーブル及び保存データ管理テーブルの構造例を示す図である。
【図６】ユーザアプレットのデータ取出時の動作を説明する図である。
【図７Ａ】実施形態に係る情報処理装置によるデータの取出処理を示したフローチャート（その１）である。
【図７Ｂ】実施形態に係る情報処理装置によるデータの取出処理を示したフローチャート（その２）である。
【図８】従来技術の問題点を説明する図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
図１は、本実施形態に係る情報処理システムの構成図である。図１に示す情報処理システム１においては、サーバ装置であるウェブサーバ３とクライアント装置である情報処理装置２とが、ネットワーク１００を介して相互に接続されている。クライアント装置である情報処理装置２については、情報処理システム１内に２台以上が配置され得るが、図１においては、図面の簡単のため、１台のみを示す。
【００１６】
ウェブサーバ３は、外部記憶装置７にユーザアプレット８と保存用アプレット９とを記憶させておき、クライアント装置である情報処理装置２からの要求に応じてユーザアプレット８を提供する。このとき、本実施形態に係るウェブサーバ３は、ユーザアプレット８と併せて、少なくとも１つの保存用アプレット９を情報処理装置２に提供する。ユーザアプレット８は、実施例では、Ｊａｖａアプレットであり、ブラウザに読み込まれて実行される。保存用アプレット９は、ユーザアプレット８においてヒープ領域の空き容量が不足した場合に、ユーザアプレット８のデータを保存しておくために用意されている。
【００１７】
情報処理装置２は、ＣＰＵ４、物理メモリ５及び外部記憶装置６を有し、ウェブサーバ３から提供されるユーザアプレット８及び保存用アプレット９を実行する。ＣＰＵ４は、ウェブサーバ３から提供されるユーザアプレット８等を、物理メモリ５や外部記憶装置６等の仮想メモリ１０上に展開して実行させる。スワップファイル１１を生成することにより、外部記憶装置６を仮想メモリ１０として利用する。
【００１８】
このように、本実施形態においては、ブラウザに組み込まれているユーザアプレット８が、割り当てられているヒープ領域にデータを保存しようとしたときに、空き容量が不足している場合には、保存用アプレット９を利用して、データの保存を行う。以下に、本実施形態に係る保存用アプレット９を利用した仮想メモリ１０の管理方法について、具体的に説明する。
【００１９】
図２は、本実施形態に係る情報処理装置２の仮想メモリ１０の構成図である。図２においては、情報処理装置２においてウェブサーバ３からダウンロードしたユーザアプレット８及び２つの保存用アプレット９（９ａ、９ｂ）が仮想メモリ１０上に展開されている状態を例示する。保存用アプレット９については、例えばユーザアプレット８の起動時に、ＪＮＩ（Java Native Interface）経由で起動する構成としてもよい。あるいは、オペレーティングシステム（ＯＳ）の起動時に、ＯＳのスタートアップにより起動する構成としてもよい。
【００２０】
以下の説明や図面においては、保存用アプレット９を互いに区別する必要のある場合には、符号ａ、ｂを付すこととする。
前述のとおり、実施例では、ユーザアプレット８は、仮想マシンであるＪａｖａＶＭ２１上で動作するＪａｖａアプレットであり、ユーザアプレット８は、ブラウザプロセス２０に組み込まれた仮想マシンであるＪａｖａＶＭ２１上で動作する。仮想メモリ１０上に展開されたユーザアプレット８は、ＪａｖａＶＭ２１のヒープ領域のうち、所定の領域が割り当てられている。
【００２１】
図２に示すように、ユーザアプレット８は、データ管理処理部２３を有する。データ管理処理部２３は、判定部４１、保存処理部４２、管理部４３及びデータ管理テーブル２４を有し、ユーザアプレット８のデータの保存処理やデータの取出処理を管理する。
【００２２】
データ管理処理部２３のうち、判定部４１は、ユーザアプレット８がデータをメモリに保存する旨の要求を受け付けると、ユーザアプレット８に割り当てられているヒープ領域の空き容量を参照し、ユーザアプレット８のヒープ領域にデータを保存することができるか否かを判定する。また、判定部４１は、保存用アプレット９に保存するデータをメモリから取り出す旨の要求を受け付けると、ユーザアプレット８のヒープ領域の空き容量を参照し、ユーザアプレット８のヒープ領域にデータを保存することができるか否かを判定する。
【００２３】
保存処理部４２は、判定部４１において、ユーザアプレット８のヒープ領域にデータを保存することができないと判定した場合は、ユーザアプレット８に既に保存されているデータの一部を保存用アプレット９に移動させてから、保存するよう要求されたデータをユーザアプレット８のヒープ領域に保存させる。また、保存処理部４２は、判定部４１において、ユーザアプレット８のヒープ領域に、保存用アプレット９に保存されているデータを保存することができないと判定した場合は、ユーザアプレット８のヒープ領域のデータの一部を保存用アプレット９に移動させてから、取り出すよう要求されたデータを保存用アプレット９から受信して、ユーザアプレット８のヒープ領域に保存させる。
【００２４】
管理部４３は、保存処理部４２において、保存用アプレット９を用いてデータの保存やデータの取り出しを行った場合等には、データの保存状況を管理するためのデータ管理テーブル２４を更新する。データ管理テーブル２４の詳細については、図５を参照して説明する。
【００２５】
保存用アプレット９は、ブラウザプロセス２０とは別プロセスであるブラウザプロセス３０に組み込まれた仮想マシンであるＪａｖａＶＭ３１上で動作するＪａｖａアプレットである。保存用アプレット９は、ＪａｖａＶＭ３１のヒープ領域のうちの割り当てられている領域に、ユーザアプレット８のデータ管理処理部２３から受信したデータを保存し、また、データ管理処理部２３からの要求に応じて、保存しているデータを送信する。保存用アプレット９は、保存用アプレット９において保存しているデータを管理するための保存データ管理テーブル３３を有する。保存データ管理テーブル３３の詳細については、図５を参照して説明する。
【００２６】
図１や図２に示すユーザアプレット８がメモリ（仮想メモリ１０）を管理する方法について、以下に具体的に説明する。まず、図３や図４Ａ、図４Ｂを参照して、データ保存時の処理について説明する。
【００２７】
図３は、ユーザアプレット８のデータ保存時の動作を説明する図である。図中に示す（１）〜（３）は、データ保存時の処理の手順を示す。初め、ユーザアプレット８は、ヒープ領域にデータＡ〜Ｃを保存しているものとする。
【００２８】
まず、手順（１）において、ユーザアプレット８が、新たにデータＤを保存する旨の要求を受け付けると、データＤをデータ管理処理部２３に渡す。
【００２９】
手順（２）においては、データ管理処理部２３は、Ｊａｖａヒープサイズを確認して、データＤをユーザアプレット８（のデータ管理処理部２３）内に保存することができるか否かを判定する。具体的には、Ｊａｖａ標準ＡＰＩ（Application Program Interface）により提供されるクラス「Runtime」のメソッド「freememory」を用いてＪａｖａＶＭ２１内のメモリ領域のうち、ヒープ領域の空き容量を取得することにより、データＤをデータ管理処理部２３に保存可能か否かを判断する。ＪａｖａＶＭ２１内のヒープ領域の空き容量により、データ管理処理部２３内にデータＤを保存することができないと判断した場合には、例えば、データ管理処理部２３内に既に保存しているデータごとにその使用頻度を参照し、使用頻度の低いデータを保存用アプレット９に渡す。図３に示す例では、データ管理処理部２３内に保存しているデータＡ〜Ｃのうち、データＣを保存用アプレット９に移動させることにより、データ管理処理部２３内に、データＤを記憶するために必要な領域を確保する。
【００３０】
上述のとおり、実施例では、使用頻度の低いデータを保存用アプレット９へ移動することで、新たに保存するよう要求されたデータ（図３のデータＤ）をユーザアプレット８に保存するための領域を確保している。これにより、ユーザアプレット８で本来保存できるサイズ（ユーザアプレット８のヒープの空き領域）以上のデータを保存することが可能となる。新たに保存するよう要求されたデータ（図３のデータＤ）は、例えば読取イメージデータ等の比較的サイズの大きなデータのみを対象としてもよい。また、実施例では、使用頻度、すなわち、所定の期間内におけるアクセス回数に基づき、保存用アプレット９に渡すデータを決定しているが、例えば累積のアクセス回数等を利用することとしてもよい。
【００３１】
保存用アプレット９においては、ユーザアプレット８側から受け取ったデータＣを保存するとともに、ユーザアプレット８から受け取ったデータの保存アプレット９内での保存状況を管理するための保存データ管理テーブル３３を更新する。
【００３２】
手順（３）においては、データＤをデータ管理処理部２３内に保存し、データの保存状況を管理するためのデータ管理テーブル２３を更新して、データの保存処理を終了する。
このように、本実施形態においては、ユーザアプレット８（のデータ管理処理部２３）に十分な空き容量がない場合には、ユーザアプレット８のデータ管理処理部２３で保存しているデータの一部を保存用アプレット９に移動させて、新たに保存すべきデータをユーザアプレット８に保存する。異なるプロセス間にまたがりデータを送受して、ユーザアプレット８に割り当てられているヒープ領域の空き容量によらずにデータを保存する方法について、図４Ａ、図Ｂ等を参照して更に詳しく説明する。
【００３３】
図４Ａ及び図４Ｂは、本実施形態に係る情報処理装置２によるデータの保存処理を示したフローチャートである。図４Ａ及び図４Ｂにおいては、（ａ）ユーザアプレット８の処理、（ｂ）データ管理処理部２３のデータ登録処理、（ｃ）データ管理処理部２３の空き領域サイズチェック処理及び（ｄ）保存用アプレット９の処理に分けて記載している。
【００３４】
図１の情報処理装置２は、ウェブサーバ３にアクセスして、外部記憶装置７のユーザアプレット８をダウンロードしてユーザアプレット８を起動する。このとき、ユーザアプレット８と共にダウンロードした保存用アプレット９についても起動しておく。ユーザアプレット８及び保存用アプレット９が起動すると、クライアント装置である情報処理装置２において、図４Ａ及び図４Ｂに示す一連の処理が開始される。
【００３５】
まず、図４Ａ（ａ）のステップＳ１で、ユーザアプレット８は、データを仮想メモリ１０に登録する旨の依頼を受け付けると、データ管理処理部２３を呼び出す。
【００３６】
図４Ａ（ｂ）のステップＳ１１で、データ管理処理部２３の判定部４１は、仮想メモリ１０のうち、ユーザアプレット８に割り当てられている領域のうち、空き領域のサイズをチェックする。空き領域のサイズのチェック方法は、図４Ｂ（ｃ）に示すとおりである。
【００３７】
すなわち、まず、ステップＳ２１で、判定部４１は、前述のＪａｖａ標準ＡＰＩにより提供されるクラス「Runtime」のメソッド「freememory」を用いて、ヒープ領域の空き容量を取得する。そして、ステップＳ２２で、判定部４１は、ステップＳ１で要求されたデータを保存した場合、ヒープ領域の空き容量が所定の閾値以下になるか否かを判定する。ステップＳ２２の判定は、ステップＳ２２で求めた空き容量からステップＳ１でユーザアプレット８が保存するよう求められたデータのサイズを減算して、所定の閾値と比較することにより行う。
【００３８】
なお、ステップＳ２２において、データ保存要求にしたがってデータを保存した後のヒープ領域の空き容量として、所定の閾値分を確保している。これは、後述するとおり、保存用アプレット９のデータを取り出す場合には、ユーザアプレット８において、保存用アプレット９から受信したデータを保存させる必要があること等による。
【００３９】
ステップＳ２２の判定の結果、データ保存後の空き容量が所定の閾値を超える場合は、保存用アプレット９にデータを移動させる必要はないと判断して、図４Ａ（ｂ）のデータ登録処理に空き容量が閾値を超える旨の値を返し、図４Ｂ（ｃ）の処理を終了する。データ保存後の空き容量が所定の閾値以下となる場合は、ステップＳ２３へと処理を移行させる。
【００４０】
ステップＳ２３では、保存処理部４２は、データ管理テーブル２４の中から、データの保存場所が、ユーザスレッド、すなわち、データ管理処理部２３内であり、且つ使用頻度が低いデータを検索する。
【００４１】
図５（ａ）は、データ管理テーブル２４の構造例を示す図である。図５（ａ）に示すとおり、データ管理テーブル２４には、データ名と対応付けて、アクセス回数、保存場所及びデータサイズが格納されている。
【００４２】
データ名は、データ管理処理部２３がユーザアプレット８からヒープ領域に記憶しているデータを識別する情報が格納される。アクセス回数は、ユーザアプレット８からアクセスのあった回数が格納される。所定の期間内のアクセス回数を格納する構成としてもよいし、累積のアクセス回数を格納する構成としてもよい。保存場所は、データの格納場所を表す情報が格納され、実施例では、データ管理処理部２３、あるいは別プロセスの保存用アプレット９のいずれかを示す値が格納される。複数の保存用アプレット９を利用する構成をとる場合は、データ管理処理部２３を示す値、あるいは、複数の保存用アプレット９ａ、９ｂ、・・・のうちいずれの保存用アプレット９であるかを示す値が格納される。データサイズは、各データのサイズが格納される。
【００４３】
図４Ｂ（ｃ）のステップＳ２４では、保存処理部４２は、保存用アプレット９から、保存用アプレット９の空き容量を取得する。保存用アプレット９は、上記のステップＳ２１と同様に、それぞれがＪａｖａ標準ＡＰＩにより提供されるクラス「Runtime」のメソッド「freememory」を用いて空き容量を取得し、ユーザアプレット８の保存処理部４２からの問い合わせに対して、取得した空き容量を通知する。例えば図２に例示するように、複数の保存用アプレット９ａ、９ｂを利用する場合は、各保存用アプレットから空き容量を取得する。
【００４４】
ステップＳ２５で、保存処理部４２は、ステップＳ２３の検索により得られたデータの格納先となる保存用アプレット９を検索する。ここでは、ステップＳ２３で使用頻度が低いデータであるとして抽出されたデータのサイズと、ステップＳ２４で求めた保存用アプレット９ごとの空き容量とから、保存用アプレット９を決定する。
【００４５】
ステップＳ２６で、保存処理部４２は、ステップＳ２３の検索により得られたデータを、ステップＳ２５で決定した保存用アプレット９に向けて送信する。Yユーザアプレット８−保存用アプレット９間のデータの送受には、例えば、ＲＭＩ（Remote Method Invocation）通信を利用する。ステップＳ２７で、データ管理処理部２３の管理部４３は、データ管理テーブル２４を更新して、ステップＳ２６で保存用アプレット９に送信したデータについての保存場所を更新し、図４Ｂ（ｃ）の処理を終了する。図３の例では、データＣの保存場所を「データ管理処理部２３」から「保存用アプレット９ａ」と更新し、図４Ｂ（ｃ）の処理を終了する。
【００４６】
図４Ｂ（ｄ）に示すように、保存用アプレット９においては、ステップＳ３１で、ユーザアプレット８のデータ管理処理部２３から受信したデータを保存すると、ステップＳ３２で、保存データ管理テーブル３３を更新して、処理を終了する。
【００４７】
図５（ｂ）は、保存用アプレット９の保存データ管理テーブル３３の構造例を示す図である。図５（ｂ）に示すとおり、保存データ管理テーブル３３には、データ名が格納されている。保存用アプレット９は、保存データ管理テーブル３３を参照することにより、自らのヒープ領域に保存されているデータを認識する。図３の例では、保存データ管理テーブル３３に、ユーザアプレット８から受信したデータＣについての情報を追加する。
【００４８】
ユーザアプレット８のデータ管理処理部２３は、上記のとおり、図４Ｂ（ｃ）に示す処理により、データ管理処理部２３の空き容量をチェックすると、ステップＳ１２に進む。そして、ステップＳ１２で、保存処理部４２は、図４Ａ（ａ）のステップＳ１で保存するよう要求されたデータをデータ管理処理部２３のヒープ領域に保存する。そして、ステップＳ１３で、管理部４３が、データ管理テーブル２４を更新して、ステップＳ１２で保存したデータのデータ名等の情報を追加すると、図４Ｂ（ｂ）の処理を終了する。図３の例では、データ管理テーブル２４にデータＤに関する情報を追加すると、図４Ｂ（ｂ）の処理を終了する。
【００４９】
図４Ａ（ａ）のステップＳ１において、ユーザアプレット８は、データ管理処理部２３から一連の処理が正常に終了した旨の値を受け取ると、図４Ａ（ａ）の処理を終了する。
次に、図６や図７Ａ、図７Ｂを参照して、データ取出時の処理について説明する。
【００５０】
図６は、ユーザアプレット８のデータ取出時の動作を説明する図である。図中に示す（１）〜（６）は、データ取出時の処理手順を示す。上記のデータ保存処理により、データＤを保存するときに、データＣについては保存用アプレット９に保存先を移動されている場合を例に説明する。
【００５１】
まず、手順（１）において、ユーザアプレット８が、データＣを取り出す旨の要求を受け付ける。
【００５２】
手順（２）で、データ管理処理部２３は、データ管理テーブル２４のデータ名をキーに検索して、取り出しを求められているデータＣの保存場所を取得する。データ管理処理部２３が保存場所である場合の処理については、公知の技術であるので、ここでは説明を割愛する。
【００５３】
手順（３）では、データ管理処理部２３は、Ｊａｖａヒープサイズを確認する。これは、データの保存場所が保存用アプレット９である場合は、保存用アプレット９から受け取ったデータをデータ管理処理部２３に保存するためである。Ｊａｖａヒープサイズの求め方は、図３の手順（２）と同様である。図６においては、ユーザアプレット８（のデータ管理処理部２３）に割り当てられているヒープ領域の空き容量は、データＣを保存するには不足している場合を例示する。この場合、データ管理処理部２３は、保存しているデータのうち、例えば使用頻度の低いデータを保存用アプレット９に渡す。図６では、データＤを保存用アプレット９に渡す場合を示す。
【００５４】
手順（４）では、データ管理処理部２３は、保存用アプレット９から、データＣを取得する。そして、手順（５）で、データＣを依頼元に通知する。最後に、手順（６）で、データ管理テーブル２４を更新する。
【００５５】
このように、本実施形態においては、保存用アプレット９に保存したデータを取り出す場合、ユーザアプレット８においては取り出したデータを保存させるための領域が不足することがある。このような場合には、ユーザアプレット８に保存しているデータの中から一部を保存用アプレット９に移動させて、取り出したデータを保存させるための領域を確保する。ユーザアプレット８と保存用アプレット９とで、異なるプロセス間にまたがりデータを送受して、ユーザアプレット８に割り当てられているヒープ領域の空き容量によらずにデータを取り出す方法について、図７Ａ及び図７Ｂを参照して更に詳しく説明する。
【００５６】
図７Ａ及び図７Ｂは、本実施形態に係る情報処理装置２によるデータの取出処理を示したフローチャートである。図７Ａ及び図７Ｂにおいては、（ａ）ユーザアプレット８の処理、（ｂ）データ管理処理部２３の処理及び（ｃ）保存用アプレット９の処理に分けて記載している。
【００５７】
ここでは、ユーザアプレット８の空き容量の不足により、保存用アプレット９に一部のデータが保存されている場合にデータの取り出しを行う場合について説明する。
まず、図７Ａ（ａ）のステップＳ４１で、ユーザアプレット８は、データを仮想メモリ１０から取得する旨の依頼を受け付けると、データ管理処理部２３を呼び出す。
【００５８】
図７Ａ（ｂ）のステップＳ５１で、データ管理処理部２３の判定部４１は、データ管理テーブル２４から、依頼されたデータ名をキーにデータの保存場所を検索する。
【００５９】
ステップＳ５２で、判定部４１は、取出要求のあったデータの保存場所がユーザアプレット８であるか否かを判定する。保存場所がユーザアプレット８である場合は、特に処理を行わず、処理をステップＳ５７へと移行させる。保存場所が保存用アプレット９である場合は、処理をステップＳ５３へと移行させる。
【００６０】
ステップＳ５３で、保存処理部４２は、データ管理テーブル２４から、取出依頼のあったデータのデータ名をキーにデータサイズを取得する。そして、ステップＳ５４で、ユーザアプレット８の空き容量のサイズをチェックする。空き容量のサイズのチェック方法については、先に図４Ｂ（ｃ）を参照して説明したとおりである。データ管理処理部２３の判定部４１は、図４Ｂ（ｃ）の処理により、保存用アプレット９から受信したデータをユーザアプレット８に保存させるだけの空き容量があるか否かを判断する。空き容量が不足すると判断した場合は、図６を参照して説明したように、保存処理部４２が、ユーザアプレット８に保存するデータの中から、例えば使用頻度の低いデータを抽出して、保存用アプレット９へと保存場所を移動させる。図４Ｂ（ｃ）の空き容量のサイズのチェックが完了すると、処理をステップＳ５５へと移行させる。
【００６１】
ステップＳ５５で、データ管理処理部２３の保存処理部４２は、保存用アプレット９からデータを受信する。このとき、保存用アプレット９において実行する処理は、図７Ｂ（ｃ）に示すとおりである。
【００６２】
すなわち、まず、ステップＳ６１で、保存用アプレット９は、ユーザアプレット８のデータ管理処理部２３が指定するデータを取得して、ユーザアプレット８に送信する。そして、ステップＳ６２で、保存用アプレット９は、保存データ管理テーブル３３を更新し、ステップＳ６１においてユーザアプレット８に送信したデータに関する情報を削除すると、図７Ｂ（ｃ）の処理を終了する。図６の例では、保存用アプレット９は、保存データ管理テーブル３３からデータＣに関する情報を削除して、図７Ｂ（ｃ）の処理を終了する。データ管理処理部２３は、保存用アプレット９からデータを受信すると、ユーザアプレット８に保存し、ステップＳ５６へと処理を移行させる。
【００６３】
ステップＳ５６で、データ管理処理部２３の管理部４３は、データ管理テーブル２４のうち、保存用アプレット９から受信したデータについての保存場所等の更新を行い、ステップＳ５７に進む。図６の例では、ステップＳ５６においては、データ管理テーブル２４のうち、データＤの保存場所を「データ管理処理部２３」から「保存用アプレット９ａ」に更新する。
【００６４】
ステップＳ５７で、データ管理処理部２３は、ステップＳ５５において受信したデータをユーザアプレット８に通知し、ステップＳ５８で、管理部４３が、データ管理テーブル２４のうち、ユーザアプレット８に通知したデータのアクセス回数をインクリメントすると、図７Ａ（ｂ）の処理を終了する。
【００６５】
ユーザアプレット８は、データと共に、データ管理処理部２３において一連の処理が正常に終了した旨の通知を受けると、図７Ａ（ａ）の処理を終了する。
【００６６】
以上説明したように、本実施形態に係る情報処理システム１によれば、ウェブサーバ３には、ユーザアプレット８とともに保存用アプレット９を記憶させておき、クライアント装置である情報処理装置２にユーザアプレット８をダウンロードさせるときには、ユーザアプレット８とともに、別プロセス上で動作する保存用アプレット９をダウンロードさせる。情報処理装置２においては、保存用アプレット９を起動させておき、ユーザアプレット８においてデータ保存の要求を受け付けると、ユーザアプレット８に割り当てられているヒープ領域にデータを保存することができるか否かを判定する。ユーザアプレット８のヒープ領域にデータを保存できない場合は、ユーザアプレット８に既に記憶されているデータの一部を保存用アプレット９に移動させてから、保存の要求のあったデータをユーザアプレット８に保存させる。このように、別プロセス上で動作する保存用アプレット９を用いてデータを保存することで、ユーザアプレット８に割り当てられたヒープ領域の空き容量によらず、データの保存や取出を行うことが可能となる。すなわち、本実施形態によれば、異なるプロセス上で動作する複数のアプレット間にまたがりデータの保存や取出が可能となり、仮想マシンであるＪａｖａＶＭ２１上で動作するユーザアプレット８が、ブラウザプロセス２０に割り当てられているヒープ領域のうち、連続する空き容量以上の領域を使用することが可能となる。
【００６７】
なお、上記においては、Ｊａｖａアプレットである保存用アプレット９を用いてメモリ管理を行う方法について説明しているが、これに限定されるものではない。例えば、Ｊａｖａアプリケーションを利用して上記の方法によりメモリ管理を行っても、同様の効果を得ることができる。
【００６８】
この他にも、本発明は、本発明の要旨を逸脱しない範囲内で、種々の改良及び変更が可能である。例えば、前述の各実施形態に示された全体構成からいくつかの構成要素を削除してもよく、更には各実施形態の異なる構成要素を適宜組み合わせてもよい。
【符号の説明】
【００６９】
１      情報処理システム
２      情報処理装置（クライアント装置）
３      ウェブサーバ
４      ＣＰＵ
５      物理メモリ
６、７      外部記憶装置
８      ユーザアプレット
９      保存用アプレット
１０    仮想メモリ
１１    スワップファイル
２０、３０    ブラウザプロセス
２１、３１    ＪａｖａＶＭ（仮想マシン）
２３    データ管理処理部
２４    データ管理テーブル
３３    保存データ管理テーブル
４１    判定部
４２    保存処理部
４３    管理部
【図１】
2013246783.tif 000003
【図２】
2013246783.tif 000004
【図３】
2013246783.tif 000005
【図４Ａ】
2013246783.tif 000006
【図４Ｂ】
2013246783.tif 000007
【図５】
2013246783.tif 000008
【図６】
2013246783.tif 000009
【図７Ａ】
2013246783.tif 000010
【図７Ｂ】
2013246783.tif 000011
【図８】
2013246783.tif 000012