JP2007094871A - メモリ管理装置及びメモリ管理方法 - Google Patents
メモリ管理装置及びメモリ管理方法 Download PDFInfo
- Publication number
- JP2007094871A JP2007094871A JP2005285077A JP2005285077A JP2007094871A JP 2007094871 A JP2007094871 A JP 2007094871A JP 2005285077 A JP2005285077 A JP 2005285077A JP 2005285077 A JP2005285077 A JP 2005285077A JP 2007094871 A JP2007094871 A JP 2007094871A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- allocation information
- memory area
- variable
- execution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Landscapes
- Memory System (AREA)
Abstract
【課題】予め大容量のメモリを確保しなくても、オブジェクト指向型プログラムの実行システムの実行性能を維持する。
【解決手段】オブジェクト指向型プログラム実行システム100において、取得したJavaアプリ3に含まれるメモリ割り当て情報に基づき、メモリ割り当て設定部13は、メモリ15を可変メモリ領域17と固定メモリ領域19に割り当てる。また、メモリ割り当て設定部13は、ユーザ入力部9から入力されたメモリ割り当て情報、または命令実行部7において、Javaアプリ3の実行履歴から算出されたメモリ割り当て情報に基づき、メモリ15を可変メモリ領域17と固定メモリ領域19に割り当てることも可能である。【選択図】図1
【解決手段】オブジェクト指向型プログラム実行システム100において、取得したJavaアプリ3に含まれるメモリ割り当て情報に基づき、メモリ割り当て設定部13は、メモリ15を可変メモリ領域17と固定メモリ領域19に割り当てる。また、メモリ割り当て設定部13は、ユーザ入力部9から入力されたメモリ割り当て情報、または命令実行部7において、Javaアプリ3の実行履歴から算出されたメモリ割り当て情報に基づき、メモリ15を可変メモリ領域17と固定メモリ領域19に割り当てることも可能である。【選択図】図1
Description
本発明は、オブジェクト指向型プログラムで実行される実行オブジェクトが記憶されるメモリを管理するメモリ管理装置、メモリ管理方法に関し、特にメモリの効率的な利用方法に関するものである。
近年、コンピュータ技術、通信、及び放送技術の発達に伴い、画像、音声、動画像のような多様な情報メディアを提供するマルチメディアシステムが普及しつつある。このようなマルチメディアシステムとして、対話型デジタルテレビ、携帯端末、ゲーム装置などが市場に提供されている。
マルチメディアシステムにおいては、インターネット等の通信媒体を介して伝送される画像、音声及び動画像データのような大量のデータがマルチメディアシステム内のアプリケーションと結合されて、画面やスピーカなどから映像や音声としてユーザに提供される。故に、ダウンロードされる大量のデータを効率的に処理する技術がマルチメディアシステムに要求される。
画像、音声及び動画像データのようなマルチメディアデータを利用した拡張性の高いサービスを実現する手法として、近年、サン・マイクロシステムズ社のオブジェクト指向型言語であるJava(登録商標)環境が普及している。
Javaで記述されたプログラムで構成されるアプリケーション(以下、Javaアプリケーション)に関する一般的な従来の技術の一例として、Javaアプリケーションからの要求に応じて、インターネットなどの通信媒体を介してデータがダウンロードされてJavaアプリケーションに用いられる例がある。
Javaアプリケーションは、Java言語で記述されたソースコードをコンパイルし、低級な擬似コードである中間コード(以下、バイトコード)に変換したものである。Java仮想マシンプログラム(以下、JavaVM;Java Virtual Machine)によって、そのバイトコードがコンピュータで解釈・実行可能な機械語(以下、ネイティブコード)に変換されて実行される。JavaVMのこの機能によって、特定のOSやプロセッサに依存することなく、いかなるプラットフォームでもJavaの実行可能な環境が実現される。
JavaVMは、Javaアプリケーションの実行処理で用いられるデータやバイトコードを含むJavaオブジェクトを生成したり、生成されたJavaオブジェクトを参照する。Javaオブジェクトは、Javaのクラスで定義されたバイトコードや実行時に参照されるデータであって、Javaアプリケーションからの要求に応じて、RAM(Random Access Memory)等より構成された所定のメモリに生成される。生成されたJavaオブジェクトのみが、Javaアプリケーションによる実行処理で用いられることとなる。
ところで、メモリ上に生成されたJavaオブジェクト、メモリをJavaVMのみが占有するのではなく、他のアプリケーション(ブラウザ等)によって共有される場合がある。このような場合、JavaVMによる処理効率が悪化する場合がある。具体的にはJavaVM単独でメモリを占有する場合は、ガーベージコレクション(GC;Garbage Collection)、コンパクション(Compaction)等、利用可能なメモリ領域を増やす技術(再配置)を使用し、インテリジェントなメモリ管理を行なうことが可能であるが、上記のような場合はこのような技術を使用することができない。
このような課題を解決するため、いくつかの方法が提案されている。例えば、JavaVMとメモリを共有する他のアプリケーションとを連係させ、JavaVMのGC等のメモリ管理機能の発動を他のアプリケーションに反映させることが考えられる。しかし、この場合、JavaVMとメモリを共有する他のアプリケーション総てとの間に連係を確保しなければならず、労力がかかることになる。
また、JavaVMのメモリ内容を他のアプリケーション用の別のメモリにコピーし、互いのメモリを別にする方法もあるが、当然余計なメモリが必要となる。
また、JavaVMにGC、コンパクション等をさせないことも考えられるが、メモリの使用可能領域の断片化がすすむと、使用可能容量が減ってしまう。
特許文献1では、Javaオブジェクトを記憶され、Javaオブジェクトが記憶され、JavaVMによって再配置される可変アドレスメモリ領域と、他のプログラムに割り当てられた固定的なアドレスで生成されたデータが記憶される固定アドレスメモリ領域とにメモリを分ける技術が開示されている。さらにこの構成下において、画像等の大きなデータは固定アドレスメモリ領域に置いたまま、Javaアプリケーションの要求に応じ、Javaオブジェクトとしてアクセス、読み出しができるようになっている。
特開2002−244851号公報
しかしながら、上述の技術は、可変アドレスメモリ領域と固定アドレスメモリ領域の双方に大容量のメモリ領域を割り当てることが前提となっている。このような大容量のメモリがいかなる状況下でも提供可能であるわけではない。特に携帯端末の如き用意できるメモリの容量が限られた分野においては、当該技術を利用することは難しい。
本発明は、こうした事情を考慮して創案したものであり、大きなメモリ容量を確保することなく、Javaアプリケーションの要求に応じたJavaVMのメモリへのアクセスを可能にしつつ、他のアプリケーションもメモリを共有することを可能とするメモリ管理装置、メモリ管理方法を提供する。
本発明は、オブジェクト指向型の言語で構成されるオブジェクト指向型プログラムを実行する仮想マシンプログラムによって実行される実行オブジェクトを記憶するメモリを管理するメモリ管理装置であって、前記メモリを、前記仮想マシンプログラムによって再配置される可変メモリ領域及び当該可変メモリ領域以外の固定メモリ領域に割り当てる際に、実行対象の実行オブジェクトに応じて、当該可変メモリ領域及び固定メモリ領域各々に必要とされるメモリ量を含むメモリ割り当て情報を取得するメモリ割り当て情報取得部と、前記メモリ割り当て情報に基づき、前記メモリを前記可変メモリ領域及び前記固定メモリ領域に割り当てるメモリ割り当て設定部とを備える。
本発明によれば、実行対象となった実行オブジェクト毎に、メモリが可変メモリ領域及び固定メモリ領域に適切に割り当てられるため、予め大容量のメモリを確保しなくても、プログラム実行システムの実行性能を維持することができる。また、実行オブジェクトのみならず、他のアプリケーションもメモリを共有することが可能となる。
前記実行オブジェクトが前記メモリ割り当て情報を含む場合、前記メモリ割り当て情報取得部を、前記実行オブジェクトに含まれる前記メモリ割り当て情報を抽出する割り当て情報抽出部より構成することができる。
上記構成において、適切な割り当てと考えられる情報が予め実行オブジェクトに盛り込まれており、簡易な構成において、適切なメモリの割り当てが期待される。
また、前記メモリ割り当て情報取得部を、ユーザが前記メモリ割り当て情報を入力する入力部より構成することもできる。
上記構成により、ユーザは自らの好みに応じてメモリの割り当てを調整することができる。
また、前記メモリ割り当て情報取得部を、実行オブジェクト毎の実行履歴に基づいて前記メモリ割り当て情報を算出する割り当て情報算出部より構成することもできる。実行履歴には、実行オブジェクト毎に使用された前記可変メモリ領域及び前記固定メモリ領域各々のメモリ量が含まれる。
上記構成において、実行履歴よりメモリ割り当ての情報が得られるため、当該情報は適切な割り当てと考えられ、簡易な構成において、適切なメモリの割り当てが期待される。
一般的に、前記オブジェクト指向型プログラム及び前記実行オブジェクトは、Javaアプリケーションより構成される。
また、前記メモリと、前記実行オブジェクトを取得する実行オブジェクト取得部と、上述のメモリ管理装置とからオブジェクト指向型プログラム実行システムが構成される。
さらに、前記実行履歴を用いて、前記実行オブジェクトに予め付与されるメモリ割り当て情報を決定するプログラム開発方法が提供される。
実行履歴から得られる割り当て情報は適切なものと考えられるため、実行オブジェクトの開発において有効利用され得ると考えられる。
更に本発明は、オブジェクト指向型の言語で構成されるオブジェクト指向型プログラムを実行する仮想マシンプログラムによって実行される実行オブジェクトを記憶するメモリを管理するメモリ管理方法を提供し、該方法は、前記メモリを、前記仮想マシンプログラムによって再配置される可変メモリ領域及び当該可変メモリ領域以外の固定メモリ領域に割り当てる際に、実行対象の実行オブジェクトに応じて、当該可変メモリ領域及び固定メモリ領域各々に必要とされるメモリ量を含むメモリ割り当て情報を取得するステップと、前記割り当て情報に基づき、前記メモリを前記可変メモリ領域及び前記固定メモリ領域に割り当てるステップと、を備える。このような方法を実行するプログラムも本発明に含まれる。
本発明によれば、実行オブジェクト毎に、メモリを柔軟にかつ適切に利用することが可能となり、予め大容量のメモリを確保しなくても、プログラム実行システムの実行性能を維持することができる。
図1は、本発明のメモリ管理装置を含むオブジェクト指向型プログラム実行システムの実施形態の構成を示すブロック図である。このオブジェクト指向型プログラム実行システム(以下、「実行システム」ともいう)100は、Javaアプリケーション記憶部(以下、「Javaアプリ記憶部」という)1と、割り当て情報抽出部4と、Java仮想マシンプログラム(以下、「JavaVM」という)5と、ユーザ入力部9と、メモリ割り当て情報記憶部11と、メモリ割り当て設定部13と、メモリ15とを備えている。実行システム100の全体構成は、パーソナルコンピュータ等の処理装置の内部に組み込まれるが、各部分が複数の装置に分散されて配置されてもよい。特に実行システム100は、大容量のメモリの確保が難しい携帯電話等の携帯端末に組み込むことが可能である。
Javaアプリ記憶部(Javaアプリ取得部)1は、ブラウザ等ネットワークとのインターフェースを用いて、インターネット等所定のネットワーク200からダウンロードされた種々の実行オブジェクトとしてのJavaアプリケーション(以下「Javaアプリ」という)3を取得し、記憶する。Javaアプリ記憶部1は、RAM(Random Access Memory)、ROM(Read Only Memory)、ハードディスク等種々の記憶媒体より構成することができる。
Javaアプリ3は、サン・マイクロシステムズ社により開発されたオブジェクト指向型言語であるJavaで記述されたプログラムで構成される。オブジェクト指向型言語は、データの集合と、それに対する手続きを「オブジェクト」と呼ばれる一つのまとまりとして管理し、その組み合わせによってソフトウェアを構築するために用いられる言語であり、大規模なソフトウェア開発に適した言語であるが、Javaはその代表的なものである。Javaアプリ3は、ネットワーク200からダウンロードされるのみならず、他の手法によっても入手され得る。
割り当て情報抽出部4は、特に後述(A)に関連するJavaアプリ3に記述されたJavaアプリ内メモリ割り当て情報(「ヒント情報」ともいう)を抽出し、メモリ割り当て情報記憶部11に記憶する。
Javaアプリ3は、Java言語で記述されたソースコードをコンパイルすることによって、バイトコードに変換されたものである。JavaVM5には、このバイトコードが送信される。JavaVM5はバイトコードをコンピュータで解釈・実行可能なネイティブコードに変換する。JavaVM5は命令実行部7を含んでおり、この命令実行部(割り当て情報算出部)7は特に後述(C)に関連するJavaアプリ3の実行履歴に関する実行履歴メモリ割り当て情報を算出し、メモリ割り当て情報記憶部11に記憶する。
ユーザ入力部9は、実行システム100のユーザが種々の操作を入力するマウス、キーボード、タッチパネル、音声入力装置等により構成される。本発明では通常操作に加え、後述(B)に関連するユーザ設定メモリ割り当て情報を入力可能であり、ユーザ入力部9は、ユーザにより入力された当該情報をメモリ割り当て情報記憶部11に記憶する。
メモリ割り当て設定部13は、上述したJavaアプリ内メモリ割り当て情報、ユーザ設定メモリ割り当て情報、実行履歴メモリ割り当て情報(三つをまとめて「メモリ割り当て情報」という)のうちいずれかに基づき、後述するメモリ15内の可変メモリ領域17と固定メモリ領域19のメモリ領域配分(メモリ境界21の位置)を決定するものである。
メモリ15は、RAM、ハードディスク等種々の記憶媒体より構成され、可変メモリ領域17と固定メモリ領域19と含む。両者は擬似的なメモリ境界21によって分けられており、このメモリ境界21は可動である。すなわち、メモリ割り当て設定部13から得られたメモリ割り当て情報に基づき、可変メモリ領域17と固定メモリ領域19のメモリ領域配分が決定される。
可変メモリ領域17はJavaVM5によって管理され、ガーベージコレクション(GC;Garbage Collection)、コンパクション(Compaction)等の如き、JavaVM5によるメモリの再配置機能が施される領域であり、記憶されているデータのアドレスは可変制御可能となっている。この機能によって、使用されなくなったメモリ領域が集約されて連続した利用可能なメモリ領域が提供され、メモリを効率良く使用することが可能となる。
一方、固定メモリ領域19は、ネイティブプログラムやOS等のモジュールの実行処理に利用されるデータが記憶され、OSの管理下で各プログラムにアドレスが割り当てられ、可変メモリ領域17のようにデータの再配置は実行されない。言い換えると、可変メモリ領域17はJavaVM5の管理下におかれ、GCやコンパクション等の対象となるメモリ領域であり、固定メモリ領域19はそれ以外の領域と把握される。 一般的なシステム構成においては、(1)「可変」はJavaVMの管理下である一方で「固定」はOSの管理下であり、(2)「可変」はJavaVM(Javaアプリ)だけが使用し、「固定」はJava以外の他のアプリ(またはドライバ、ハードウエア等)と共用されるものと把握される。
そして、本発明では、上述したように、メモリ15が、JavaVM5が管理する可変メモリ領域17と、それ以外の固定メモリ領域21に分けられているが、それぞれのメモリ量、すなわちメモリ領域の配分は固定されておらず、Javaアプリの特性等に応じて(上述したメモリ割り当て情報に基づいて)、いずれかの領域へ配分されるメモリ量を増減させる。このような制御により、固定メモリ領域19を使用しないアプリの場合においては、可変メモリ領域17の使用可能なメモリ量を増やし、容量の大きくなった可変メモリ領域17を使用することができ、処理効率を上げることができる。一方、画像データ等の如き固定メモリ領域19を利用した方が好ましいアプリの場合においては、固定メモリ領域19の使用可能なメモリ量を増やし、容量の大きくなった固定メモリ領域19を使用することができ、処理効率を上げることができる。
可変メモリ領域17と固定メモリ領域21のメモリ領域配分の基礎となるメモリ割り当て情報としては特に限定はされず、種々の情報を利用することができる。本実施形態では、上述したように、Javaアプリ内メモリ割り当て情報、ユーザ設定メモリ割り当て情報、実行履歴メモリ割り当て情報の三つを単なる具体例として挙げる。従って、メモリ割り当て情報を取得するメモリ割り当て情報取得部の具体例が、割り当て情報抽出部4、命令実行部7、ユーザ入力部9各々となるが、このような形態には限定されない。
(A)Javaアプリ内メモリ割り当て情報
Javaアプリ3をネットワーク200からダウンロードする時に、可変・固定メモリ領域へのメモリ割当てのヒントとなる情報(Javaアプリ内メモリ割り当て情報)をも同時に取得し、当該アプリを起動した時に、この情報を使ってメモリの割当てを決定する。
Javaアプリ3をネットワーク200からダウンロードする時に、可変・固定メモリ領域へのメモリ割当てのヒントとなる情報(Javaアプリ内メモリ割り当て情報)をも同時に取得し、当該アプリを起動した時に、この情報を使ってメモリの割当てを決定する。
(B)ユーザ設定メモリ割り当て情報
可変・固定メモリ領域へのメモリ割当てを、ユーザが自ら設定する。
可変・固定メモリ領域へのメモリ割当てを、ユーザが自ら設定する。
(C)実行履歴メモリ割り当て情報
Javaアプリ実行時に、可変メモリ領域、固定メモリ領域各々をどの程度使用しているかの実行履歴情報を蓄積しておき、当該Javaアプリを次回起動した時に、この情報を使って可変メモリ領域、固定メモリ領域へのメモリの割当てを設定する。この情報を使うことにより、(A)のJavaアプリ内メモリ割り当て情報を決定し、Javaアプリに盛り込むことが可能となる。
Javaアプリ実行時に、可変メモリ領域、固定メモリ領域各々をどの程度使用しているかの実行履歴情報を蓄積しておき、当該Javaアプリを次回起動した時に、この情報を使って可変メモリ領域、固定メモリ領域へのメモリの割当てを設定する。この情報を使うことにより、(A)のJavaアプリ内メモリ割り当て情報を決定し、Javaアプリに盛り込むことが可能となる。
以下上述した情報を用いたメモリ管理方法を説明する。図2は、所定のJavaアプリのJavaオブジェクトをメモリ15上に読み込む際に行なわれるメモリ割り当て設定処理の手順を示すフローチャートであり、主としてメモリ割り当て設定部13の処理を示す。この処理手順は、上述の(A)ないし(C)のいずれかを採用する優先度が予め決められている例であり、優先度の高い順に(A)、(B)、(C)と設定されている。
まず、実行システムの起動時に、メモリ割り当て設定部13は、
メモリ割り当て情報記憶部11から、当該Javaアプリに記述されたメモリ割り当てに関する情報(Javaアプリ内メモリ割り当て情報)を検索する(ステップS101)。
メモリ割り当て情報記憶部11から、当該Javaアプリに記述されたメモリ割り当てに関する情報(Javaアプリ内メモリ割り当て情報)を検索する(ステップS101)。
該当情報が存在する場合(ステップS102;YES)、当該情報に基づいて、メモリ15の可変メモリ領域と固定メモリ領域各々に、所定のメモリ領域を割り当てる(ステップS103)。
一方、Javaアプリに記述されたメモリ割り当てに関する情報が存在しない場合(ステップS102;NO)、メモリ割り当て情報記憶部11から、当該Javaアプリに対しユーザにより設定されたメモリ割り当てに関する情報(ユーザ設定メモリ割り当て情報)を検索する(ステップS104)。
該当情報が存在する場合(ステップS105;YES)、当該情報に基づいて、メモリ15の可変メモリ領域と固定メモリ領域各々に、所定のメモリ領域を割り当てる(ステップS103)。
一方、ユーザにより設定されたメモリ割り当てに関する情報が存在しない場合(ステップS105;NO)、メモリ割り当て情報記憶部11から、当該Javaアプリの実行履歴上のメモリ割り当てに関する情報(実行履歴メモリ割り当て情報)を検索する(ステップS106)。
該当情報が存在する場合(ステップS107;YES)、当該情報に基づいて、メモリ15の可変メモリ領域と固定メモリ領域各々に、所定のメモリ領域を割り当てる(ステップS103)。
一方、実行履歴上のメモリ割り当てに関する情報が存在しない場合(ステップS107;NO)、標準的な割り当て方法に基づいて、メモリ15の可変メモリ領域と固定メモリ領域各々に、所定のメモリ領域を割り当てる(ステップS108)。ここでの標準的な割り当て情報とは一種のデフォルトであり、メモリ割り当て情報記憶部11に当該Javaアプリのメモリ15のメモリ割り当てに関する情報が存在しない場合に使用される。
図3はJavaアプリに記述されたメモリ割り当て情報(Javaアプリ内メモリ割り当て情報)の例を示す。「アプリ名」、「アプリサイズ」、「更新日時」は従来からJavaアプリの本体データとは別にJavaアプリに盛り込まれている、管理データ、属性データを構成するものである。そして、本発明では、「使用メモリサイズ(固定部)」、「使用メモリサイズ(可変部)」が追加記述されている。これらはJavaアプリ内メモリ割り当て情報をなすものであり、当該Javaアプリを実行するために、可変メモリ領域17と固定メモリ領域21各々に、最低限確保されるべきメモリ量(以下、「メモリサイズ」、「サイズ」ともいう)を記述している。
使用メモリサイズとして、2400Kバイト(2.4Mバイト)、1000Kバイト(1Mバイト)が記載されているが、もしメモリ15の全体メモリ量が8Mの場合、4.6Mバイト余ることになるが、余ったメモリ量の分配方法は特に限定されず、デフォルトとして方法を設定しておけばよい。
図4はメモリ割り当ての設定をユーザが行なう場合の表示画面の例を示す。本画面にはユーザにより設定されるメモリ割り当てに関する情報(ユーザ設定メモリ割り当て情報)が表示されている。ユーザがJavaアプリの一覧から実行したいJavaアプリを選択し、適宜提示される詳細設定画面からメモリ割り当て設定の項目を選択すると、この画面が表示される。
本表示の場合、ユーザは左右キー等を用いて、可変メモリ領域17、固定メモリ領域21各々へのメモリの割り当て配分を決定することができる。特に本例では棒グラフ形式になっているので、ユーザは視覚的に割り当て配分を把握しやすい。また、ユーザの設定後にJavaアプリを実行したが、設定のメモリ割り当て配分が適当でなく、可変メモリ領域17、固定メモリ領域21いずれかのメモリ量が不足する事態も生じ得る。この場合、「可変部(固定部)のメモリが足りません」等の所定のエラーメッセージを表示画面に表示させ、ユーザに再設定を促すようにしてもよい。
図5はメモリ割り当ての設定に使用されるJavaアプリの実行履歴情報(実行履歴メモリ割り当て情報)の例を示す。本例の履歴情報には、アプリ名、過去の当該アプリの起動(実行)回数、各回において可変メモリ領域17、固定メモリ領域21各々で消費されたメモリ量が含まれる。このような実行履歴情報は命令実行部7において保存され、命令実行部7は、実行履歴情報に基づき実行履歴メモリ割り当て情報を算出する。ただし、実行履歴情報を命令実行部7で保存することは必須ではない。
さらに、本発明においては、上記の実行履歴情報を用いて、Javaアプリ3に予め記述されるJavaアプリ内メモリ割り当て情報が提供される。すなわち、図5のような実行履歴から得られる割り当て情報は、実際の実行の結果を反映しており、適切なものと考えられる。従って、Javaアプリ3の開発において、このような実行履歴を有効利用することが期待され、本発明により、Javaアプリ3の有用な開発方法、開発環境が提供される。
図6は、上述(A)Javaアプリ内メモリ割り当て情報を用いたメモリ割り当て設定処理の手順の一例を示すフローチャートである。まず、割り当て情報抽出部4が、図3の如きJavaアプリ3に記述されたメモリ割り当て情報(Javaアプリ内メモリ割り当て情報)から、可変メモリ領域17に割り当てられるべきメモリ量(固定部サイズ)及び固定メモリ領域21に割り当てられるべきメモリ量(可変部サイズ)を取得し、メモリ割り当て情報記憶部11に記憶する(ステップS201)。
次に、メモリ割り当て設定部13は、メモリ割り当て情報記憶部11に記憶された上述のサイズについて以下の計算を行なう。まず固定部サイズと可変部サイズの合計を計算し、当該値が、メモリ15の全メモリサイズに等しいか否かの判定を行なう(ステップS202)。値がメモリ15の全メモリサイズに等しい場合(ステップS202;YES)、固定部サイズ及び可変部サイズの値に基づいて、メモリ15を可変メモリ領域17、固定メモリ領域21各々に割り当て、処理を終了する(ステップS206)。
上記値がメモリ15の全メモリサイズに等しくない場合(ステップS202;NO)、当該値が、全メモリサイズより小さいか否かの判定がなされる(ステップS203)。値が全メモリサイズより小さい場合(ステップS203;YES)、固定部サイズに、余ったメモリ量の半分の値((全メモリ−固定部−可変部)/2)を加算するとともに、可変部サイズにも同じ値を加算し、固定部サイズ、可変部サイズを決定する(ステップS204)。そして、当該固定部サイズ及び可変部サイズの値に基づいて、メモリ15を可変メモリ領域17、固定メモリ領域21各々に割り当て、処理を終了する(ステップS206)。
上記値が、全メモリサイズより小さくない場合(ステップS203;NO)、固定部サイズから超過したメモリ量の半分の値((固定部+可変部−全メモリ)/2)を減算するとともに、可変部サイズからも同じ値を減算し、固定部サイズ、可変部サイズを決定する(ステップS205)。そして、当該固定部サイズ及び可変部サイズの値に基づいて、メモリ15を可変メモリ領域17、固定メモリ領域21各々に割り当て、処理を終了する(ステップS206)。
図7は、上述(C)実行履歴メモリ割り当て情報を用いたメモリ割り当て設定処理の手順の一例を示すフローチャートである。まず、命令実行部7は、蓄積した過去のメモリ割り当てに関する実行履歴情報(実行履歴メモリ割り当て情報)から、起動回数と、各回における固定部サイズ、可変部使用サイズを取得するとともに、メモリ不足発生最小回数を十分大きな値に初期化し、かつ最終的に設定されるべき最適固定部サイズをデフォルトサイズに初期化する(ステップS301)。
次に、暫定固定部サイズとして0から全メモリサイズまで以下に述べる処理を繰り返し行なう(ステップS302a〜S302bのループ)。まず、メモリ不足発生回数を理想的な0回に初期化する(ステップS303)。そして各起動回毎に(ステップS304a〜S304bのループ)、当該起動回での固定部サイズが暫定の固定部サイズより大きいか(n回目固定部サイズ>暫定固定部サイズ)、または当該起動回での可変部サイズが、全メモリサイズから暫定固定部サイズを減算した値より大きいか(n回目可変部サイズ>全メモリサイズ−暫定固定部サイズ)の判定を行い(ステップS305)、もしそうならば(ステップS305;YES)、メモリ不足発生回数に1を加算する(ステップS306)。そうでないならば(ステップS305;NO)、加算は行なわない。そして、ステップS305及びステップS306の繰り返しにより得られたメモリ不足回数と、最小回数の比較を行なう(ステップS307)。もし最小回数がメモリ不足発生回数より大きい場合は(ステップS307;YES)、最小回数及び最適固定部サイズを今回の値に更新する(ステップS308)。
そして、最終的に得られた最適固定部サイズは、メモリ割り当て情報記憶部11に記憶され、メモリ割り当て設定部13は、メモリ15を可変メモリ領域17、固定メモリ領域21各々に割り当て、処理を終了する(ステップS309)。
尚、本発明の効果として、メモリの効率的な利用を挙げたが、描画等の処理性能を向上させるという点も本発明の効果である。たとえば、OSは、可変メモリ領域、固定メモリ領域各々に蓄積されたオブジェクトをどちらも表示させることはできる。しかしながら、メモリ量が大きく、特に書き換えの必要のないイメージデータ等は、固定メモリ領域に配置することが好ましい。なぜなら、メモリアドレスが変化しないということを前提にOSが該イメージデータを処理したり、或はイメージデータの読み出しに適した高速な専用メモリに該イメージデータを配置することが可能となり、読み出し速度も向上させることができるからである。
特に、OSによるキャッシュの設定をメモリのブロック毎(4Kバイト単位等)に変更可能な場合は、可変メモリ領域側には書き換え処理速度向上のため、通例キャッシュが設けられる。しかしながら、固定メモリ領域側は、読み出しのみが行なわれるためキャッシュを設ける必要はなく、また、例えば読み出しを行なうハードウエアがJavaVMを実行するハードウエアとキャッシュを共有しないような構成においては、キャッシュフラッシュ等による処理速度の低下を避けるため、むしろキャッシュを設けないことが好ましい。従ってシステム起動時に、OSが本発明のメモリ管理装置に基づいて決定されメモリ境界(メモリ割り当て)に従って、メモリのブロック毎にキャッシュを設定するか否か決定することが可能である。ここで起動時に設定されたメモリ境界は、その後の当該Javaアプリの実行中には変更されないことが必要とされる。
尚、メモリ15の全領域を可変メモリ領域17、固定メモリ領域19の双方に割り当てることは必須でなく、いずれの領域にも属さない予備のメモリ領域を残しておく形態も本発明に含まれる。
本発明のメモリ管理装置、実行システムは、大容量のメモリを確保することが困難な携帯電話やPDA(Personal Digital Assistant)等の携帯端末に好ましく適用されるが。適用される装置は特に限定されない。
以上、本発明の各種実施形態を説明したが、本発明は前記実施形態において示された事項に限定されず、明細書の記載、並びに周知の技術に基づいて、当業者がその変更・応用することも本発明の予定するところであり、保護を求める範囲に含まれる。
本発明によれば、実行オブジェクト毎に、メモリを柔軟にかつ適切に利用することが可能となり、予め大容量のメモリを確保しなくても、プログラム実行システムの実行性能を維持することが可能なメモリ管理装置、メモリ管理方法が提供される。
1 Javaアプリ記憶部
3 Javaアプリ
4 割り当て情報抽出部
5 JavaVM
7 命令実行部
9 ユーザ入力部
11 メモリ割り当て情報記憶部
13 メモリ割り当て設定部
15 メモリ
17 可変メモリ領域
19 固定メモリ領域
21 メモリ境界
100 オブジェクト指向型プログラム実行システム
200 ネットワーク
3 Javaアプリ
4 割り当て情報抽出部
5 JavaVM
7 命令実行部
9 ユーザ入力部
11 メモリ割り当て情報記憶部
13 メモリ割り当て設定部
15 メモリ
17 可変メモリ領域
19 固定メモリ領域
21 メモリ境界
100 オブジェクト指向型プログラム実行システム
200 ネットワーク
Claims (10)
- オブジェクト指向型の言語で構成されるオブジェクト指向型プログラムを実行する仮想マシンプログラムによって実行される実行オブジェクトを記憶するメモリを管理するメモリ管理装置であって、
前記メモリを、前記仮想マシンプログラムによって再配置される可変メモリ領域及び当該可変メモリ領域以外の固定メモリ領域に割り当てる際に、実行対象の実行オブジェクトに応じて、当該可変メモリ領域及び固定メモリ領域各々に必要とされるメモリ量を含むメモリ割り当て情報を取得するメモリ割り当て情報取得部と、
前記メモリ割り当て情報に基づき、前記メモリを前記可変メモリ領域及び前記固定メモリ領域に割り当てるメモリ割り当て設定部と、
を備えるメモリ管理装置。 - 請求項1記載のメモリ管理装置であって、
前記実行オブジェクトが前記メモリ割り当て情報を含み、
前記メモリ割り当て情報取得部が、前記実行オブジェクトに含まれる前記メモリ割り当て情報を抽出する割り当て情報抽出部より構成されるメモリ管理装置。 - 請求項1記載のメモリ管理装置であって、
前記メモリ割り当て情報取得部が、ユーザが前記メモリ割り当て情報を入力する入力部より構成されるメモリ管理装置。 - 請求項1記載のメモリ管理装置であって、
前記メモリ割り当て情報取得部が、実行オブジェクト毎の実行履歴に基づいて前記メモリ割り当て情報を算出する割り当て情報算出部より構成されるメモリ管理装置。 - 請求項4記載のメモリ管理装置であって、
前記実行履歴が、実行オブジェクト毎に使用された前記可変メモリ領域及び前記固定メモリ領域各々のメモリ量を含むメモリ管理装置。 - 請求項1ないし5のいずれか1項記載のメモリ管理装置であって、
前記オブジェクト指向型プログラム及び前記実行オブジェクトは、Javaアプリケーションより構成されるメモリ管理装置。 - 前記メモリと、
前記実行オブジェクトを取得する実行オブジェクト取得部と、
請求項1ないし6のいずれか1項記載のメモリ管理装置と、
を備えるオブジェクト指向型プログラム実行システム。 - 請求項4または5記載のメモリ管理装置において使用する前記実行履歴を用いて、前記実行オブジェクトに予め付与されるメモリ割り当て情報を決定するプログラム開発方法。
- オブジェクト指向型の言語で構成されるオブジェクト指向型プログラムを実行する仮想マシンプログラムによって実行される実行オブジェクトを記憶するメモリを管理するメモリ管理方法であって、
前記メモリを、前記仮想マシンプログラムによって再配置される可変メモリ領域及び当該可変メモリ領域以外の固定メモリ領域に割り当てる際に、実行対象の実行オブジェクトに応じて、当該可変メモリ領域及び固定メモリ領域各々に必要とされるメモリ量を含むメモリ割り当て情報を取得するステップと、
前記割り当て情報に基づき、前記メモリを前記可変メモリ領域及び前記固定メモリ領域に割り当てるステップと、
を備えるメモリ管理方法。 - オブジェクト指向型の言語で構成されるオブジェクト指向型プログラムを実行する仮想マシンプログラムによって実行される実行オブジェクトを記憶するメモリを管理するコンピュータによって実行されるプログラムであって、当該プログラムは、
前記メモリを、前記仮想マシンプログラムによって再配置される可変メモリ領域及び当該可変メモリ領域以外の固定メモリ領域に割り当てる際に、実行対象の実行オブジェクトに応じて、当該可変メモリ領域及び固定メモリ領域各々に必要とされるメモリ量を含むメモリ割り当て情報を取得する手順と、
前記割り当て情報に基づき、前記メモリを前記可変メモリ領域及び前記固定メモリ領域に割り当てる手順と、
をコンピュータに実行させるプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005285077A JP2007094871A (ja) | 2005-09-29 | 2005-09-29 | メモリ管理装置及びメモリ管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005285077A JP2007094871A (ja) | 2005-09-29 | 2005-09-29 | メモリ管理装置及びメモリ管理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007094871A true JP2007094871A (ja) | 2007-04-12 |
Family
ID=37980494
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005285077A Withdrawn JP2007094871A (ja) | 2005-09-29 | 2005-09-29 | メモリ管理装置及びメモリ管理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007094871A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010041415A (ja) * | 2008-08-05 | 2010-02-18 | Ricoh Co Ltd | 画像形成装置、メモリ管理方法、及びメモリ管理プログラム |
KR101618634B1 (ko) | 2009-01-07 | 2016-05-09 | 삼성전자주식회사 | 비휘발성 메모리와, 이의 페이지 동적할당장치 및 페이지 매핑장치와, 이의 페이지 동적할당방법 및 페이지 매핑방법 |
US11061572B2 (en) | 2016-04-22 | 2021-07-13 | Advanced Micro Devices, Inc. | Memory object tagged memory monitoring method and system |
-
2005
- 2005-09-29 JP JP2005285077A patent/JP2007094871A/ja not_active Withdrawn
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010041415A (ja) * | 2008-08-05 | 2010-02-18 | Ricoh Co Ltd | 画像形成装置、メモリ管理方法、及びメモリ管理プログラム |
KR101618634B1 (ko) | 2009-01-07 | 2016-05-09 | 삼성전자주식회사 | 비휘발성 메모리와, 이의 페이지 동적할당장치 및 페이지 매핑장치와, 이의 페이지 동적할당방법 및 페이지 매핑방법 |
US11061572B2 (en) | 2016-04-22 | 2021-07-13 | Advanced Micro Devices, Inc. | Memory object tagged memory monitoring method and system |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7203941B2 (en) | Associating a native resource with an application | |
KR101361945B1 (ko) | 컴퓨터 스레드들의 이종 리소스들로의 맵핑 | |
CN103098014B (zh) | 存储系统 | |
CN103620548B (zh) | 具有增强的应用元数据的存储器管理器 | |
US8972690B2 (en) | Methods and apparatuses for usage based allocation block size tuning | |
US20090327621A1 (en) | Virtual memory compaction and compression using collaboration between a virtual memory manager and a memory manager | |
US20100318745A1 (en) | Dynamic Content Caching and Retrieval | |
JP4376181B2 (ja) | プログラム実行処理端末装置 | |
CN1447224A (zh) | 计算机应用程序中优化存储器使用的方法 | |
JP2018518733A (ja) | ファイル操作方法及び装置 | |
KR20010007010A (ko) | 컴퓨터 메모리에서 데이터 관리 방법, 장치 및 프로그램제품 | |
US20040254975A1 (en) | Method for managing applications and data in a limited capabilities environment via remote virtual hosting and management | |
JP2008542919A (ja) | 表示におけるエレメントz−順番の精密なグレイン制御 | |
WO2014107987A1 (en) | File presenting method and apparatus for a smart terminal | |
EP3812904B1 (en) | Swap area in memory using multiple compression algorithms | |
JP4295805B2 (ja) | メモリ管理装置、メモリ管理方法、メモリ管理プログラム及び該プログラムを記録したコンピュータ読み取り可能な記録媒体 | |
US8972629B2 (en) | Low-contention update buffer queuing for large systems | |
WO2013035420A1 (ja) | メモリ割り当て方法、プログラム、及びシステム | |
JP2007094871A (ja) | メモリ管理装置及びメモリ管理方法 | |
JP2002278828A (ja) | ガーベージコレクション実行方法、コンピュータプログラム、プログラム格納媒体、および情報処理装置 | |
KR100493893B1 (ko) | 자바 프로그램에서 클래스 로딩 과정을 단축시키는 시스템및 방법 | |
US10120796B2 (en) | Memory allocation for long-lived objects | |
JP2004529419A (ja) | ソフトウェアアプリケーションローディング用のソフトウェアエンジンおよび方法 | |
CN115269170A (zh) | 内存申请方法及相关设备 | |
JP4504756B2 (ja) | Java(登録商標名)実行環境におけるメモリ管理方法及びメモリ管理プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20071113 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20071120 |
|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20081202 |