(57)【要約】【課題】予め大容量のメモリを確保しなくても、オブジェクト指向型プログラムの実行システムの実行性能を維持する。【解決手段】オブジェクト指向型プログラム実行システム１００において、取得したＪａｖａアプリ３に含まれるメモリ割り当て情報に基づき、メモリ割り当て設定部１３は、メモリ１５を可変メモリ領域１７と固定メモリ領域１９に割り当てる。また、メモリ割り当て設定部１３は、ユーザ入力部９から入力されたメモリ割り当て情報、または命令実行部７において、Ｊａｖａアプリ３の実行履歴から算出されたメモリ割り当て情報に基づき、メモリ１５を可変メモリ領域１７と固定メモリ領域１９に割り当てることも可能である。【選択図】図１
2007094871.tif 000002
【特許請求の範囲】
【請求項１】
オブジェクト指向型の言語で構成されるオブジェクト指向型プログラムを実行する仮想マシンプログラムによって実行される実行オブジェクトを記憶するメモリを管理するメモリ管理装置であって、
前記メモリを、前記仮想マシンプログラムによって再配置される可変メモリ領域及び当該可変メモリ領域以外の固定メモリ領域に割り当てる際に、実行対象の実行オブジェクトに応じて、当該可変メモリ領域及び固定メモリ領域各々に必要とされるメモリ量を含むメモリ割り当て情報を取得するメモリ割り当て情報取得部と、
前記メモリ割り当て情報に基づき、前記メモリを前記可変メモリ領域及び前記固定メモリ領域に割り当てるメモリ割り当て設定部と、
を備えるメモリ管理装置。
【請求項２】
請求項１記載のメモリ管理装置であって、
前記実行オブジェクトが前記メモリ割り当て情報を含み、
前記メモリ割り当て情報取得部が、前記実行オブジェクトに含まれる前記メモリ割り当て情報を抽出する割り当て情報抽出部より構成されるメモリ管理装置。
【請求項３】
請求項１記載のメモリ管理装置であって、
前記メモリ割り当て情報取得部が、ユーザが前記メモリ割り当て情報を入力する入力部より構成されるメモリ管理装置。
【請求項４】
請求項１記載のメモリ管理装置であって、
前記メモリ割り当て情報取得部が、実行オブジェクト毎の実行履歴に基づいて前記メモリ割り当て情報を算出する割り当て情報算出部より構成されるメモリ管理装置。
【請求項５】
請求項４記載のメモリ管理装置であって、
前記実行履歴が、実行オブジェクト毎に使用された前記可変メモリ領域及び前記固定メモリ領域各々のメモリ量を含むメモリ管理装置。
【請求項６】
請求項１ないし５のいずれか１項記載のメモリ管理装置であって、
前記オブジェクト指向型プログラム及び前記実行オブジェクトは、Ｊａｖａアプリケーションより構成されるメモリ管理装置。
【請求項７】
前記メモリと、
前記実行オブジェクトを取得する実行オブジェクト取得部と、
請求項１ないし６のいずれか１項記載のメモリ管理装置と、
を備えるオブジェクト指向型プログラム実行システム。
【請求項８】
請求項４または５記載のメモリ管理装置において使用する前記実行履歴を用いて、前記実行オブジェクトに予め付与されるメモリ割り当て情報を決定するプログラム開発方法。
【請求項９】
オブジェクト指向型の言語で構成されるオブジェクト指向型プログラムを実行する仮想マシンプログラムによって実行される実行オブジェクトを記憶するメモリを管理するメモリ管理方法であって、
前記メモリを、前記仮想マシンプログラムによって再配置される可変メモリ領域及び当該可変メモリ領域以外の固定メモリ領域に割り当てる際に、実行対象の実行オブジェクトに応じて、当該可変メモリ領域及び固定メモリ領域各々に必要とされるメモリ量を含むメモリ割り当て情報を取得するステップと、
前記割り当て情報に基づき、前記メモリを前記可変メモリ領域及び前記固定メモリ領域に割り当てるステップと、
を備えるメモリ管理方法。
【請求項１０】
オブジェクト指向型の言語で構成されるオブジェクト指向型プログラムを実行する仮想マシンプログラムによって実行される実行オブジェクトを記憶するメモリを管理するコンピュータによって実行されるプログラムであって、当該プログラムは、
前記メモリを、前記仮想マシンプログラムによって再配置される可変メモリ領域及び当該可変メモリ領域以外の固定メモリ領域に割り当てる際に、実行対象の実行オブジェクトに応じて、当該可変メモリ領域及び固定メモリ領域各々に必要とされるメモリ量を含むメモリ割り当て情報を取得する手順と、
前記割り当て情報に基づき、前記メモリを前記可変メモリ領域及び前記固定メモリ領域に割り当てる手順と、
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オブジェクト指向型プログラムで実行される実行オブジェクトが記憶されるメモリを管理するメモリ管理装置、メモリ管理方法に関し、特にメモリの効率的な利用方法に関するものである。
【背景技術】
【０００２】
近年、コンピュータ技術、通信、及び放送技術の発達に伴い、画像、音声、動画像のような多様な情報メディアを提供するマルチメディアシステムが普及しつつある。このようなマルチメディアシステムとして、対話型デジタルテレビ、携帯端末、ゲーム装置などが市場に提供されている。
【０００３】
マルチメディアシステムにおいては、インターネット等の通信媒体を介して伝送される画像、音声及び動画像データのような大量のデータがマルチメディアシステム内のアプリケーションと結合されて、画面やスピーカなどから映像や音声としてユーザに提供される。故に、ダウンロードされる大量のデータを効率的に処理する技術がマルチメディアシステムに要求される。
【０００４】
画像、音声及び動画像データのようなマルチメディアデータを利用した拡張性の高いサービスを実現する手法として、近年、サン・マイクロシステムズ社のオブジェクト指向型言語であるＪａｖａ（登録商標）環境が普及している。
【０００５】
Ｊａｖａで記述されたプログラムで構成されるアプリケーション（以下、Ｊａｖａアプリケーション）に関する一般的な従来の技術の一例として、Ｊａｖａアプリケーションからの要求に応じて、インターネットなどの通信媒体を介してデータがダウンロードされてＪａｖａアプリケーションに用いられる例がある。
【０００６】
Ｊａｖａアプリケーションは、Ｊａｖａ言語で記述されたソースコードをコンパイルし、低級な擬似コードである中間コード（以下、バイトコード）に変換したものである。Ｊａｖａ仮想マシンプログラム（以下、ＪａｖａＶＭ；Ｊａｖａ Virtual Machine）によって、そのバイトコードがコンピュータで解釈・実行可能な機械語（以下、ネイティブコード）に変換されて実行される。ＪａｖａＶＭのこの機能によって、特定のＯＳやプロセッサに依存することなく、いかなるプラットフォームでもＪａｖａの実行可能な環境が実現される。
【０００７】
ＪａｖａＶＭは、Ｊａｖａアプリケーションの実行処理で用いられるデータやバイトコードを含むＪａｖａオブジェクトを生成したり、生成されたＪａｖａオブジェクトを参照する。Ｊａｖａオブジェクトは、Ｊａｖａのクラスで定義されたバイトコードや実行時に参照されるデータであって、Ｊａｖａアプリケーションからの要求に応じて、ＲＡＭ（Random Access Memory）等より構成された所定のメモリに生成される。生成されたＪａｖａオブジェクトのみが、Ｊａｖａアプリケーションによる実行処理で用いられることとなる。
【０００８】
ところで、メモリ上に生成されたＪａｖａオブジェクト、メモリをＪａｖａＶＭのみが占有するのではなく、他のアプリケーション（ブラウザ等）によって共有される場合がある。このような場合、ＪａｖａＶＭによる処理効率が悪化する場合がある。具体的にはＪａｖａＶＭ単独でメモリを占有する場合は、ガーベージコレクション（ＧＣ；Garbage Collection）、コンパクション（Compaction）等、利用可能なメモリ領域を増やす技術（再配置）を使用し、インテリジェントなメモリ管理を行なうことが可能であるが、上記のような場合はこのような技術を使用することができない。
【０００９】
このような課題を解決するため、いくつかの方法が提案されている。例えば、ＪａｖａＶＭとメモリを共有する他のアプリケーションとを連係させ、ＪａｖａＶＭのＧＣ等のメモリ管理機能の発動を他のアプリケーションに反映させることが考えられる。しかし、この場合、ＪａｖａＶＭとメモリを共有する他のアプリケーション総てとの間に連係を確保しなければならず、労力がかかることになる。
【００１０】
また、ＪａｖａＶＭのメモリ内容を他のアプリケーション用の別のメモリにコピーし、互いのメモリを別にする方法もあるが、当然余計なメモリが必要となる。
【００１１】
また、ＪａｖａＶＭにＧＣ、コンパクション等をさせないことも考えられるが、メモリの使用可能領域の断片化がすすむと、使用可能容量が減ってしまう。
【００１２】
特許文献１では、Ｊａｖａオブジェクトを記憶され、Ｊａｖａオブジェクトが記憶され、ＪａｖａＶＭによって再配置される可変アドレスメモリ領域と、他のプログラムに割り当てられた固定的なアドレスで生成されたデータが記憶される固定アドレスメモリ領域とにメモリを分ける技術が開示されている。さらにこの構成下において、画像等の大きなデータは固定アドレスメモリ領域に置いたまま、Ｊａｖａアプリケーションの要求に応じ、Ｊａｖａオブジェクトとしてアクセス、読み出しができるようになっている。
【特許文献１】特開２００２−２４４８５１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
しかしながら、上述の技術は、可変アドレスメモリ領域と固定アドレスメモリ領域の双方に大容量のメモリ領域を割り当てることが前提となっている。このような大容量のメモリがいかなる状況下でも提供可能であるわけではない。特に携帯端末の如き用意できるメモリの容量が限られた分野においては、当該技術を利用することは難しい。
【００１４】
本発明は、こうした事情を考慮して創案したものであり、大きなメモリ容量を確保することなく、Ｊａｖａアプリケーションの要求に応じたＪａｖａＶＭのメモリへのアクセスを可能にしつつ、他のアプリケーションもメモリを共有することを可能とするメモリ管理装置、メモリ管理方法を提供する。
【課題を解決するための手段】
【００１５】
本発明は、オブジェクト指向型の言語で構成されるオブジェクト指向型プログラムを実行する仮想マシンプログラムによって実行される実行オブジェクトを記憶するメモリを管理するメモリ管理装置であって、前記メモリを、前記仮想マシンプログラムによって再配置される可変メモリ領域及び当該可変メモリ領域以外の固定メモリ領域に割り当てる際に、実行対象の実行オブジェクトに応じて、当該可変メモリ領域及び固定メモリ領域各々に必要とされるメモリ量を含むメモリ割り当て情報を取得するメモリ割り当て情報取得部と、前記メモリ割り当て情報に基づき、前記メモリを前記可変メモリ領域及び前記固定メモリ領域に割り当てるメモリ割り当て設定部とを備える。
【００１６】
本発明によれば、実行対象となった実行オブジェクト毎に、メモリが可変メモリ領域及び固定メモリ領域に適切に割り当てられるため、予め大容量のメモリを確保しなくても、プログラム実行システムの実行性能を維持することができる。また、実行オブジェクトのみならず、他のアプリケーションもメモリを共有することが可能となる。
【００１７】
前記実行オブジェクトが前記メモリ割り当て情報を含む場合、前記メモリ割り当て情報取得部を、前記実行オブジェクトに含まれる前記メモリ割り当て情報を抽出する割り当て情報抽出部より構成することができる。
【００１８】
上記構成において、適切な割り当てと考えられる情報が予め実行オブジェクトに盛り込まれており、簡易な構成において、適切なメモリの割り当てが期待される。
【００１９】
また、前記メモリ割り当て情報取得部を、ユーザが前記メモリ割り当て情報を入力する入力部より構成することもできる。
【００２０】
上記構成により、ユーザは自らの好みに応じてメモリの割り当てを調整することができる。
【００２１】
また、前記メモリ割り当て情報取得部を、実行オブジェクト毎の実行履歴に基づいて前記メモリ割り当て情報を算出する割り当て情報算出部より構成することもできる。実行履歴には、実行オブジェクト毎に使用された前記可変メモリ領域及び前記固定メモリ領域各々のメモリ量が含まれる。
【００２２】
上記構成において、実行履歴よりメモリ割り当ての情報が得られるため、当該情報は適切な割り当てと考えられ、簡易な構成において、適切なメモリの割り当てが期待される。
【００２３】
一般的に、前記オブジェクト指向型プログラム及び前記実行オブジェクトは、Ｊａｖａアプリケーションより構成される。
【００２４】
また、前記メモリと、前記実行オブジェクトを取得する実行オブジェクト取得部と、上述のメモリ管理装置とからオブジェクト指向型プログラム実行システムが構成される。
【００２５】
さらに、前記実行履歴を用いて、前記実行オブジェクトに予め付与されるメモリ割り当て情報を決定するプログラム開発方法が提供される。
【００２６】
実行履歴から得られる割り当て情報は適切なものと考えられるため、実行オブジェクトの開発において有効利用され得ると考えられる。
【００２７】
更に本発明は、オブジェクト指向型の言語で構成されるオブジェクト指向型プログラムを実行する仮想マシンプログラムによって実行される実行オブジェクトを記憶するメモリを管理するメモリ管理方法を提供し、該方法は、前記メモリを、前記仮想マシンプログラムによって再配置される可変メモリ領域及び当該可変メモリ領域以外の固定メモリ領域に割り当てる際に、実行対象の実行オブジェクトに応じて、当該可変メモリ領域及び固定メモリ領域各々に必要とされるメモリ量を含むメモリ割り当て情報を取得するステップと、前記割り当て情報に基づき、前記メモリを前記可変メモリ領域及び前記固定メモリ領域に割り当てるステップと、を備える。このような方法を実行するプログラムも本発明に含まれる。
【発明の効果】
【００２８】
本発明によれば、実行オブジェクト毎に、メモリを柔軟にかつ適切に利用することが可能となり、予め大容量のメモリを確保しなくても、プログラム実行システムの実行性能を維持することができる。
【発明を実施するための最良の形態】
【００２９】
図１は、本発明のメモリ管理装置を含むオブジェクト指向型プログラム実行システムの実施形態の構成を示すブロック図である。このオブジェクト指向型プログラム実行システム（以下、「実行システム」ともいう）１００は、Ｊａｖａアプリケーション記憶部（以下、「Ｊａｖａアプリ記憶部」という）１と、割り当て情報抽出部４と、Ｊａｖａ仮想マシンプログラム（以下、「ＪａｖａＶＭ」という）５と、ユーザ入力部９と、メモリ割り当て情報記憶部１１と、メモリ割り当て設定部１３と、メモリ１５とを備えている。実行システム１００の全体構成は、パーソナルコンピュータ等の処理装置の内部に組み込まれるが、各部分が複数の装置に分散されて配置されてもよい。特に実行システム１００は、大容量のメモリの確保が難しい携帯電話等の携帯端末に組み込むことが可能である。
【００３０】
Ｊａｖａアプリ記憶部（Ｊａｖａアプリ取得部）１は、ブラウザ等ネットワークとのインターフェースを用いて、インターネット等所定のネットワーク２００からダウンロードされた種々の実行オブジェクトとしてのＪａｖａアプリケーション（以下「Ｊａｖａアプリ」という）３を取得し、記憶する。Ｊａｖａアプリ記憶部１は、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、ハードディスク等種々の記憶媒体より構成することができる。
【００３１】
Ｊａｖａアプリ３は、サン・マイクロシステムズ社により開発されたオブジェクト指向型言語であるＪａｖａで記述されたプログラムで構成される。オブジェクト指向型言語は、データの集合と、それに対する手続きを「オブジェクト」と呼ばれる一つのまとまりとして管理し、その組み合わせによってソフトウェアを構築するために用いられる言語であり、大規模なソフトウェア開発に適した言語であるが、Ｊａｖａはその代表的なものである。Ｊａｖａアプリ３は、ネットワーク２００からダウンロードされるのみならず、他の手法によっても入手され得る。
【００３２】
割り当て情報抽出部４は、特に後述（Ａ）に関連するＪａｖａアプリ３に記述されたＪａｖａアプリ内メモリ割り当て情報（「ヒント情報」ともいう）を抽出し、メモリ割り当て情報記憶部１１に記憶する。
【００３３】
Ｊａｖａアプリ３は、Ｊａｖａ言語で記述されたソースコードをコンパイルすることによって、バイトコードに変換されたものである。ＪａｖａＶＭ５には、このバイトコードが送信される。ＪａｖａＶＭ５はバイトコードをコンピュータで解釈・実行可能なネイティブコードに変換する。ＪａｖａＶＭ５は命令実行部７を含んでおり、この命令実行部（割り当て情報算出部）７は特に後述（Ｃ）に関連するＪａｖａアプリ３の実行履歴に関する実行履歴メモリ割り当て情報を算出し、メモリ割り当て情報記憶部１１に記憶する。
【００３４】
ユーザ入力部９は、実行システム１００のユーザが種々の操作を入力するマウス、キーボード、タッチパネル、音声入力装置等により構成される。本発明では通常操作に加え、後述（Ｂ）に関連するユーザ設定メモリ割り当て情報を入力可能であり、ユーザ入力部９は、ユーザにより入力された当該情報をメモリ割り当て情報記憶部１１に記憶する。
【００３５】
メモリ割り当て設定部１３は、上述したＪａｖａアプリ内メモリ割り当て情報、ユーザ設定メモリ割り当て情報、実行履歴メモリ割り当て情報（三つをまとめて「メモリ割り当て情報」という）のうちいずれかに基づき、後述するメモリ１５内の可変メモリ領域１７と固定メモリ領域１９のメモリ領域配分（メモリ境界２１の位置）を決定するものである。
【００３６】
メモリ１５は、ＲＡＭ、ハードディスク等種々の記憶媒体より構成され、可変メモリ領域１７と固定メモリ領域１９と含む。両者は擬似的なメモリ境界２１によって分けられており、このメモリ境界２１は可動である。すなわち、メモリ割り当て設定部１３から得られたメモリ割り当て情報に基づき、可変メモリ領域１７と固定メモリ領域１９のメモリ領域配分が決定される。
【００３７】
可変メモリ領域１７はＪａｖａＶＭ５によって管理され、ガーベージコレクション（ＧＣ；Garbage Collection）、コンパクション（Compaction）等の如き、ＪａｖａＶＭ５によるメモリの再配置機能が施される領域であり、記憶されているデータのアドレスは可変制御可能となっている。この機能によって、使用されなくなったメモリ領域が集約されて連続した利用可能なメモリ領域が提供され、メモリを効率良く使用することが可能となる。
【００３８】
一方、固定メモリ領域１９は、ネイティブプログラムやＯＳ等のモジュールの実行処理に利用されるデータが記憶され、ＯＳの管理下で各プログラムにアドレスが割り当てられ、可変メモリ領域１７のようにデータの再配置は実行されない。言い換えると、可変メモリ領域１７はＪａｖａＶＭ５の管理下におかれ、ＧＣやコンパクション等の対象となるメモリ領域であり、固定メモリ領域１９はそれ以外の領域と把握される。 一般的なシステム構成においては、（１）「可変」はＪａｖａＶＭの管理下である一方で「固定」はＯＳの管理下であり、（２）「可変」はＪａｖａＶＭ（Ｊａｖａアプリ）だけが使用し、「固定」はＪａｖａ以外の他のアプリ（またはドライバ、ハードウエア等）と共用されるものと把握される。
【００３９】
そして、本発明では、上述したように、メモリ１５が、ＪａｖａＶＭ５が管理する可変メモリ領域１７と、それ以外の固定メモリ領域２１に分けられているが、それぞれのメモリ量、すなわちメモリ領域の配分は固定されておらず、Ｊａｖａアプリの特性等に応じて（上述したメモリ割り当て情報に基づいて）、いずれかの領域へ配分されるメモリ量を増減させる。このような制御により、固定メモリ領域１９を使用しないアプリの場合においては、可変メモリ領域１７の使用可能なメモリ量を増やし、容量の大きくなった可変メモリ領域１７を使用することができ、処理効率を上げることができる。一方、画像データ等の如き固定メモリ領域１９を利用した方が好ましいアプリの場合においては、固定メモリ領域１９の使用可能なメモリ量を増やし、容量の大きくなった固定メモリ領域１９を使用することができ、処理効率を上げることができる。
【００４０】
可変メモリ領域１７と固定メモリ領域２１のメモリ領域配分の基礎となるメモリ割り当て情報としては特に限定はされず、種々の情報を利用することができる。本実施形態では、上述したように、Ｊａｖａアプリ内メモリ割り当て情報、ユーザ設定メモリ割り当て情報、実行履歴メモリ割り当て情報の三つを単なる具体例として挙げる。従って、メモリ割り当て情報を取得するメモリ割り当て情報取得部の具体例が、割り当て情報抽出部４、命令実行部７、ユーザ入力部９各々となるが、このような形態には限定されない。
【００４１】
（Ａ）Ｊａｖａアプリ内メモリ割り当て情報
Ｊａｖａアプリ３をネットワーク２００からダウンロードする時に、可変・固定メモリ領域へのメモリ割当てのヒントとなる情報（Ｊａｖａアプリ内メモリ割り当て情報）をも同時に取得し、当該アプリを起動した時に、この情報を使ってメモリの割当てを決定する。
【００４２】
（Ｂ）ユーザ設定メモリ割り当て情報
可変・固定メモリ領域へのメモリ割当てを、ユーザが自ら設定する。
【００４３】
（Ｃ）実行履歴メモリ割り当て情報
Ｊａｖａアプリ実行時に、可変メモリ領域、固定メモリ領域各々をどの程度使用しているかの実行履歴情報を蓄積しておき、当該Ｊａｖａアプリを次回起動した時に、この情報を使って可変メモリ領域、固定メモリ領域へのメモリの割当てを設定する。この情報を使うことにより、（Ａ）のＪａｖａアプリ内メモリ割り当て情報を決定し、Ｊａｖａアプリに盛り込むことが可能となる。
【００４４】
以下上述した情報を用いたメモリ管理方法を説明する。図２は、所定のＪａｖａアプリのＪａｖａオブジェクトをメモリ１５上に読み込む際に行なわれるメモリ割り当て設定処理の手順を示すフローチャートであり、主としてメモリ割り当て設定部１３の処理を示す。この処理手順は、上述の（Ａ）ないし（Ｃ）のいずれかを採用する優先度が予め決められている例であり、優先度の高い順に（Ａ）、（Ｂ）、（Ｃ）と設定されている。
【００４５】
まず、実行システムの起動時に、メモリ割り当て設定部１３は、
メモリ割り当て情報記憶部１１から、当該Ｊａｖａアプリに記述されたメモリ割り当てに関する情報（Ｊａｖａアプリ内メモリ割り当て情報）を検索する（ステップＳ１０１）。
【００４６】
該当情報が存在する場合（ステップＳ１０２；ＹＥＳ）、当該情報に基づいて、メモリ１５の可変メモリ領域と固定メモリ領域各々に、所定のメモリ領域を割り当てる（ステップＳ１０３）。
【００４７】
一方、Ｊａｖａアプリに記述されたメモリ割り当てに関する情報が存在しない場合（ステップＳ１０２；ＮＯ）、メモリ割り当て情報記憶部１１から、当該Ｊａｖａアプリに対しユーザにより設定されたメモリ割り当てに関する情報（ユーザ設定メモリ割り当て情報）を検索する（ステップＳ１０４）。
【００４８】
該当情報が存在する場合（ステップＳ１０５；ＹＥＳ）、当該情報に基づいて、メモリ１５の可変メモリ領域と固定メモリ領域各々に、所定のメモリ領域を割り当てる（ステップＳ１０３）。
【００４９】
一方、ユーザにより設定されたメモリ割り当てに関する情報が存在しない場合（ステップＳ１０５；ＮＯ）、メモリ割り当て情報記憶部１１から、当該Ｊａｖａアプリの実行履歴上のメモリ割り当てに関する情報（実行履歴メモリ割り当て情報）を検索する（ステップＳ１０６）。
【００５０】
該当情報が存在する場合（ステップＳ１０７；ＹＥＳ）、当該情報に基づいて、メモリ１５の可変メモリ領域と固定メモリ領域各々に、所定のメモリ領域を割り当てる（ステップＳ１０３）。
【００５１】
一方、実行履歴上のメモリ割り当てに関する情報が存在しない場合（ステップＳ１０７；ＮＯ）、標準的な割り当て方法に基づいて、メモリ１５の可変メモリ領域と固定メモリ領域各々に、所定のメモリ領域を割り当てる（ステップＳ１０８）。ここでの標準的な割り当て情報とは一種のデフォルトであり、メモリ割り当て情報記憶部１１に当該Ｊａｖａアプリのメモリ１５のメモリ割り当てに関する情報が存在しない場合に使用される。
【００５２】
図３はＪａｖａアプリに記述されたメモリ割り当て情報（Ｊａｖａアプリ内メモリ割り当て情報）の例を示す。「アプリ名」、「アプリサイズ」、「更新日時」は従来からＪａｖａアプリの本体データとは別にＪａｖａアプリに盛り込まれている、管理データ、属性データを構成するものである。そして、本発明では、「使用メモリサイズ（固定部）」、「使用メモリサイズ（可変部）」が追加記述されている。これらはＪａｖａアプリ内メモリ割り当て情報をなすものであり、当該Ｊａｖａアプリを実行するために、可変メモリ領域１７と固定メモリ領域２１各々に、最低限確保されるべきメモリ量（以下、「メモリサイズ」、「サイズ」ともいう）を記述している。
【００５３】
使用メモリサイズとして、２４００Ｋバイト（２．４Ｍバイト）、１０００Ｋバイト（１Ｍバイト）が記載されているが、もしメモリ１５の全体メモリ量が８Ｍの場合、４．６Ｍバイト余ることになるが、余ったメモリ量の分配方法は特に限定されず、デフォルトとして方法を設定しておけばよい。
【００５４】
図４はメモリ割り当ての設定をユーザが行なう場合の表示画面の例を示す。本画面にはユーザにより設定されるメモリ割り当てに関する情報（ユーザ設定メモリ割り当て情報）が表示されている。ユーザがＪａｖａアプリの一覧から実行したいＪａｖａアプリを選択し、適宜提示される詳細設定画面からメモリ割り当て設定の項目を選択すると、この画面が表示される。  
【００５５】
本表示の場合、ユーザは左右キー等を用いて、可変メモリ領域１７、固定メモリ領域２１各々へのメモリの割り当て配分を決定することができる。特に本例では棒グラフ形式になっているので、ユーザは視覚的に割り当て配分を把握しやすい。また、ユーザの設定後にＪａｖａアプリを実行したが、設定のメモリ割り当て配分が適当でなく、可変メモリ領域１７、固定メモリ領域２１いずれかのメモリ量が不足する事態も生じ得る。この場合、「可変部（固定部）のメモリが足りません」等の所定のエラーメッセージを表示画面に表示させ、ユーザに再設定を促すようにしてもよい。
【００５６】
図５はメモリ割り当ての設定に使用されるＪａｖａアプリの実行履歴情報（実行履歴メモリ割り当て情報）の例を示す。本例の履歴情報には、アプリ名、過去の当該アプリの起動（実行）回数、各回において可変メモリ領域１７、固定メモリ領域２１各々で消費されたメモリ量が含まれる。このような実行履歴情報は命令実行部７において保存され、命令実行部７は、実行履歴情報に基づき実行履歴メモリ割り当て情報を算出する。ただし、実行履歴情報を命令実行部７で保存することは必須ではない。
【００５７】
さらに、本発明においては、上記の実行履歴情報を用いて、Ｊａｖａアプリ３に予め記述されるＪａｖａアプリ内メモリ割り当て情報が提供される。すなわち、図５のような実行履歴から得られる割り当て情報は、実際の実行の結果を反映しており、適切なものと考えられる。従って、Ｊａｖａアプリ３の開発において、このような実行履歴を有効利用することが期待され、本発明により、Ｊａｖａアプリ３の有用な開発方法、開発環境が提供される。
【００５８】
図６は、上述（Ａ）Ｊａｖａアプリ内メモリ割り当て情報を用いたメモリ割り当て設定処理の手順の一例を示すフローチャートである。まず、割り当て情報抽出部４が、図３の如きＪａｖａアプリ３に記述されたメモリ割り当て情報（Ｊａｖａアプリ内メモリ割り当て情報）から、可変メモリ領域１７に割り当てられるべきメモリ量（固定部サイズ）及び固定メモリ領域２１に割り当てられるべきメモリ量（可変部サイズ）を取得し、メモリ割り当て情報記憶部１１に記憶する（ステップＳ２０１）。
【００５９】
次に、メモリ割り当て設定部１３は、メモリ割り当て情報記憶部１１に記憶された上述のサイズについて以下の計算を行なう。まず固定部サイズと可変部サイズの合計を計算し、当該値が、メモリ１５の全メモリサイズに等しいか否かの判定を行なう（ステップＳ２０２）。値がメモリ１５の全メモリサイズに等しい場合（ステップＳ２０２；ＹＥＳ）、固定部サイズ及び可変部サイズの値に基づいて、メモリ１５を可変メモリ領域１７、固定メモリ領域２１各々に割り当て、処理を終了する（ステップＳ２０６）。
【００６０】
上記値がメモリ１５の全メモリサイズに等しくない場合（ステップＳ２０２；ＮＯ）、当該値が、全メモリサイズより小さいか否かの判定がなされる（ステップＳ２０３）。値が全メモリサイズより小さい場合（ステップＳ２０３；ＹＥＳ）、固定部サイズに、余ったメモリ量の半分の値（（全メモリ−固定部−可変部）／２）を加算するとともに、可変部サイズにも同じ値を加算し、固定部サイズ、可変部サイズを決定する（ステップＳ２０４）。そして、当該固定部サイズ及び可変部サイズの値に基づいて、メモリ１５を可変メモリ領域１７、固定メモリ領域２１各々に割り当て、処理を終了する（ステップＳ２０６）。
【００６１】
上記値が、全メモリサイズより小さくない場合（ステップＳ２０３；ＮＯ）、固定部サイズから超過したメモリ量の半分の値（（固定部＋可変部−全メモリ）／２）を減算するとともに、可変部サイズからも同じ値を減算し、固定部サイズ、可変部サイズを決定する（ステップＳ２０５）。そして、当該固定部サイズ及び可変部サイズの値に基づいて、メモリ１５を可変メモリ領域１７、固定メモリ領域２１各々に割り当て、処理を終了する（ステップＳ２０６）。
【００６２】
図７は、上述（Ｃ）実行履歴メモリ割り当て情報を用いたメモリ割り当て設定処理の手順の一例を示すフローチャートである。まず、命令実行部７は、蓄積した過去のメモリ割り当てに関する実行履歴情報（実行履歴メモリ割り当て情報）から、起動回数と、各回における固定部サイズ、可変部使用サイズを取得するとともに、メモリ不足発生最小回数を十分大きな値に初期化し、かつ最終的に設定されるべき最適固定部サイズをデフォルトサイズに初期化する（ステップＳ３０１）。
【００６３】
次に、暫定固定部サイズとして０から全メモリサイズまで以下に述べる処理を繰り返し行なう（ステップＳ３０２ａ〜Ｓ３０２ｂのループ）。まず、メモリ不足発生回数を理想的な０回に初期化する（ステップＳ３０３）。そして各起動回毎に（ステップＳ３０４ａ〜Ｓ３０４ｂのループ）、当該起動回での固定部サイズが暫定の固定部サイズより大きいか（ｎ回目固定部サイズ＞暫定固定部サイズ）、または当該起動回での可変部サイズが、全メモリサイズから暫定固定部サイズを減算した値より大きいか（ｎ回目可変部サイズ＞全メモリサイズ−暫定固定部サイズ）の判定を行い（ステップＳ３０５）、もしそうならば（ステップＳ３０５；ＹＥＳ）、メモリ不足発生回数に１を加算する（ステップＳ３０６）。そうでないならば（ステップＳ３０５；ＮＯ）、加算は行なわない。そして、ステップＳ３０５及びステップＳ３０６の繰り返しにより得られたメモリ不足回数と、最小回数の比較を行なう（ステップＳ３０７）。もし最小回数がメモリ不足発生回数より大きい場合は（ステップＳ３０７；ＹＥＳ）、最小回数及び最適固定部サイズを今回の値に更新する（ステップＳ３０８）。
【００６４】
そして、最終的に得られた最適固定部サイズは、メモリ割り当て情報記憶部１１に記憶され、メモリ割り当て設定部１３は、メモリ１５を可変メモリ領域１７、固定メモリ領域２１各々に割り当て、処理を終了する（ステップＳ３０９）。
【００６５】
尚、本発明の効果として、メモリの効率的な利用を挙げたが、描画等の処理性能を向上させるという点も本発明の効果である。たとえば、ＯＳは、可変メモリ領域、固定メモリ領域各々に蓄積されたオブジェクトをどちらも表示させることはできる。しかしながら、メモリ量が大きく、特に書き換えの必要のないイメージデータ等は、固定メモリ領域に配置することが好ましい。なぜなら、メモリアドレスが変化しないということを前提にＯＳが該イメージデータを処理したり、或はイメージデータの読み出しに適した高速な専用メモリに該イメージデータを配置することが可能となり、読み出し速度も向上させることができるからである。
【００６６】
特に、ＯＳによるキャッシュの設定をメモリのブロック毎（４Ｋバイト単位等）に変更可能な場合は、可変メモリ領域側には書き換え処理速度向上のため、通例キャッシュが設けられる。しかしながら、固定メモリ領域側は、読み出しのみが行なわれるためキャッシュを設ける必要はなく、また、例えば読み出しを行なうハードウエアがＪａｖａＶＭを実行するハードウエアとキャッシュを共有しないような構成においては、キャッシュフラッシュ等による処理速度の低下を避けるため、むしろキャッシュを設けないことが好ましい。従ってシステム起動時に、ＯＳが本発明のメモリ管理装置に基づいて決定されメモリ境界（メモリ割り当て）に従って、メモリのブロック毎にキャッシュを設定するか否か決定することが可能である。ここで起動時に設定されたメモリ境界は、その後の当該Ｊａｖａアプリの実行中には変更されないことが必要とされる。
【００６７】
尚、メモリ１５の全領域を可変メモリ領域１７、固定メモリ領域１９の双方に割り当てることは必須でなく、いずれの領域にも属さない予備のメモリ領域を残しておく形態も本発明に含まれる。
【００６８】
本発明のメモリ管理装置、実行システムは、大容量のメモリを確保することが困難な携帯電話やＰＤＡ(Personal Digital Assistant)等の携帯端末に好ましく適用されるが。適用される装置は特に限定されない。
【００６９】
以上、本発明の各種実施形態を説明したが、本発明は前記実施形態において示された事項に限定されず、明細書の記載、並びに周知の技術に基づいて、当業者がその変更・応用することも本発明の予定するところであり、保護を求める範囲に含まれる。
【産業上の利用可能性】
【００７０】
本発明によれば、実行オブジェクト毎に、メモリを柔軟にかつ適切に利用することが可能となり、予め大容量のメモリを確保しなくても、プログラム実行システムの実行性能を維持することが可能なメモリ管理装置、メモリ管理方法が提供される。
【図面の簡単な説明】
【００７１】
【図１】本発明のメモリ管理装置が適用されるオブジェクト指向型プログラム実行システムの構成を示すブロック図。
【図２】メモリ割り当て設定処理の手順を示すフローチャート。
【図３】Ｊａｖａアプリに記述されたメモリ割り当て情報の例。
【図４】メモリ割り当ての設定をユーザが行なう場合の表示画面の例。
【図５】メモリ割り当ての設定に使用されるＪａｖａアプリの実行履歴情報の例。
【図６】メモリ割り当て設定処理の具体的手順を示すフローチャート。
【図７】メモリ割り当て設定処理の具体的手順を示すフローチャート。
【符号の説明】
【００７２】
１      Ｊａｖａアプリ記憶部
３      Ｊａｖａアプリ
４      割り当て情報抽出部
５      ＪａｖａＶＭ
７      命令実行部
９      ユーザ入力部
１１    メモリ割り当て情報記憶部
１３    メモリ割り当て設定部
１５    メモリ
１７    可変メモリ領域
１９    固定メモリ領域
２１    メモリ境界
１００  オブジェクト指向型プログラム実行システム
２００  ネットワーク
【図１】
2007094871.tif 000003
【図２】
2007094871.tif 000004
【図３】
2007094871.tif 000005
【図４】
2007094871.tif 000006
【図５】
2007094871.tif 000007
【図６】
2007094871.tif 000008
【図７】
2007094871.tif 000009