(57)【特許請求の範囲】
【請求項１】
ガベージコレクション実行手段と，ガベージコレクションを実行する毎にガベージコレクションの回数とガベージコレクションを実行した後の総メモリ量を記録するガベージコレクション記録手段と，
以前の各ガベージコレクションの動作時に前記ガベージコレクション記録手段により作成された記録結果に対して，各ガベージコレクションの回数(n) の時点(N) から一定回数(k) 内である，その後の時点(N＋1)の総メモリ量を, 前記の回数(n) の時点(N) における総メモリ量として設定することにより各ガベージコレクションの回数に対応して変換された総メモリ量が設定されたメモリ拡張チャートを求める拡張メモリ量変換手段と，求めたメモリ拡張チャートを保持する拡張メモリ量保持手段と，
前記拡張メモリ量変換手段によりメモリ拡張チャートを作成後に，メモリ拡張を必要とする場合に，前記拡張メモリ量保持手段のメモリ拡張チャートを参照し，その時のガベージコレクションの回数に対応して設定された値から拡張メモリ量を決定するメモリ拡張手段とを備えることを特徴とするメモリ管理装置。
【請求項２】
ガベージコレクション実行手段と，ガベージコレクションを実行する毎にガベージコレクションの回数とガベージコレクションを実行した後の総メモリ量を記録するガベージコレクション記録手段と，以前の各ガベージコレクションの動作時に前記ガベージコレクション記録手段により作成された記録結果に対して，各ガベージコレクションの回数(n) の時点(N) から一定回数(k) 内であり，総メモリ量の増加回数が一定数を越える期間が短い期間で隣接していると，時点(N) の総メモリ量を前記短い期間で隣接して実行されたガベージコレクションの終了時刻の総メモリ量として設定することにより各ガベージコレクションの回数に対応して変換された総メモリ量が設定されたメモリ拡張チャートを求める拡張メモリ量変換手段と，求めたメモリ拡張チャートを保持する拡張メモリ量保持手段と，
前記拡張メモリ量変換手段によりメモリ拡張チャートを作成後に，メモリ拡張を必要とする場合に，前記拡張メモリ量保持手段のメモリ拡張チャートを参照し，その時のガベージコレクションの回数に対応して設定された値から拡張メモリ量を決定するメモリ拡張手段とを備えることを特徴とするメモリ管理装置。
【請求項３】
ガベージコレクション実行プログラムと，
ガベージコレクションを実行する毎にガベージコレクションの回数とガベージコレクションを実行した後の総メモリ量を記録するガベージコレクション記録プログラムと，
以前の各ガベージコレクションの動作時に前記ガベージコレクション記録プログラムにより作成された記録結果について，各ガベージコレクションの回数(n) の時点(N) から一定回数(k) 内である，その後の時点(N＋1)の総メモリ量を, 前記の回数(n) の時点(N) における総メモリ量として設定することにより各ガベージコレクションの回数に対応して変換された総メモリ量が設定されたメモリ拡張チャートを求める拡張メモリ量変換プログラムと，
プログラムの実行においてメモリ拡張を必要とした場合に，前記メモリ拡張チャートに基づいて拡張メモリ量を決定するメモリ拡張プログラムとを記憶することを特徴とするメモリ管理プログラムを記憶した記憶媒体。
【請求項４】
ガベージコレクション実行プログラムと，
ガベージコレクションを実行する毎にガベージコレクションの回数とガベージコレクションを実行した後の総メモリ量を記録するガベージコレクション記録プログラムと，
以前の各ガベージコレクションの動作時に前記ガベージコレクション記録手段により作成された記録結果に対して，各ガベージコレクションの回数(n) の時点(N) から一定回数(k) 内であり，総メモリ量の増加回数が一定数を越える期間が短い期間で隣接していると，時点(N) の総メモリ量を前記短い期間で隣接して実行されたガベージコレクションの終了時刻の総メモリ量として設定することにより各ガベージコレクションの回数に対応して変換された総メモリ量が設定されたメモリ拡張チャートを求める拡張メモリ量変換プログラムと，
プログラムの実行においてメモリ拡張を必要とした場合に，前記メモリ拡張チャートに基づいて拡張メモリ量を決定するメモリ拡張プログラムとを記憶することを特徴とするメモリ管理プログラムを記憶した記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
ＪＡＶＡ等のプログラム言語は，メモリの拡張が必要となった時に不要なメモリ領域を自動的に求め解放するガベージコレクション機能を備えている。
【０００２】
本発明は，ガベージコレクション（ＧＣ）を有する処理系（プログラム実行手段）のメモリ管理をするメモリ管理装置およびメモリ管理プログラムを記憶した記憶媒体に関するものである。
【０００３】
【従来の技術】
従来のガベージコレクションを有するプログラムは，次のようにガベージコレクションを行い，メモリを拡張する。
【０００４】
１．処理系（プログラム実行手段）がメモリを要求する。
２．要求されたメモリが確保できない場合、ガベージコレクションを要求する。
【０００５】
３．ガベージコレクションが失敗した場合、ＯＳにメモリ要求をする。
そして，メモリ領域を拡大する場合は、通常以下の方法のいづれかでメモリ領域を拡張する。
【０００６】
１．固定量増加
総メモリサイズを固定量（例えば、１Ｍバイト）だけ、総メモリサイズを増やす。
【０００７】
２．定数倍増加
総メモリサイズを固定倍（メモリ全体の０．３倍）した大きさだけ、総メモリサイズを増やす。
【０００８】
３．空き領域を考慮した定数倍増加
総メモリサイズを固定倍（例えば０．３倍）した大きさから、メモリフラグメンテーション（メモリの不要領域を開放する処理）により得られた空き領域を差し引いた量のメモリ量を増やす。
【０００９】
【発明が解決しようとする課題】
ガベージコレクションの実行は、処理系内部の変数の参照関係を全部探索し、必要のない変数を求め、その関係する領域を開放する等の処理を行なうので、非常に時間のかかる処理である。全実行時間の半分がガベージコレクション時間であることもまれではない。そのため、ガベージコレクションの実行回数を減らすことがメモリ管理において重要である。一般的に、処理系の実行初期段階で確保するメモリが多いほど、ガベージコレクションの実行回数を減らすことができる。しかし、メモリ量には限界があるので、メモリ量を必要以上に大きく確保することができない。
【００１０】
本発明は、過去の実行メモリ使用履歴に基づき、あらかじめ必要なメモリ量を確保するようにし、効率的にメモリの拡張を行なうようにし、ガベージコレクションの実行回数を減らすことを目的とする。
【００１１】
【課題を解決するための手段】
本発明は、ガベージコレクション実行手段と、ガベージコレクションを実行する毎にガベージコレクションの回数とガベージコレクションを実行した後のメモリ量を記録するガベージコレクション記録手段と、ガベージコレクション記録手段の記録に基づいて、ガベージコレクションの実行によりメモリ拡張を必要とする場合の拡張メモリ量を定めたメモリ拡張チャートを求める拡張メモリ量変換手段と、拡張メモリ量変換手段の求めた拡張メモリ量を保持する拡張メモリ量保持手段と、メモリ拡張を必要とする場合に、拡張メモリ量保持手段を参照し、該メモリ拡張チャートを参照して拡張メモリ量を決定するメモリ拡張手段とを備える構成をもつ。
【００１２】
図１は、本発明の基本構成を示す。
図１において、
１はプログラム実行手段である。
【００１３】
２はＧＣ手段であって、ガベージコレクション実行手段である。
３はメモリである。
４はＧＣ記録手段であって、ガベージコレクションとメモリ量の関係、例えばガベージコレクションを実行する毎の総メモリ量の記録を求め、保持するものである。
【００１４】
５は拡張メモリ量変換手段であって、ＧＣ記録手段の総メモリ量の記録に基づいて、ガベージコレクションによりメモリ拡張するためのメモリ拡張チャートを作成するものである。
【００１５】
６は拡張メモリ量保持手段であって、ＧＣ記録変換手段の求めたメモリ拡張チャートを保持するものである。
７はメモリ拡張手段であって、ガベージコレクションによりメモリ拡張を必要とする時にメモリ拡張チャートに従って、メモリを拡張するものである。
【００１６】
図２は、本発明の基本構成の動作説明図である。
図２（ａ）は、変換前のメモリ拡張記録の例であり、ガベージコレクション回数と拡張後の総メモリ量の関係の記録を表すものである。
【００１７】
横軸はガベージコレクションの回数であり、縦軸は拡張後の総メモリサイズ（総メモリ量）である。
初期状態からｎ1 、ｎ2 、ｎk 、ｎm 、ｎp はガベージコレクションでメモリが拡張を必要とした回数である。初期状態からｎ1 、ｎk からｎm 、ｎn からｎp の間は、ガベージコレクションでメモリの拡張がなかった期間である。
【００１８】
図２（ｂ）は、変換後のメモリ拡張チャートの例であり、図２（ａ）のガベージコレクション回数と拡張後の総メモリ量の関係の記録をもとに求めたメモリ拡張を必要とする時に拡張するメモリ量を予め定めたメモリ拡張チャートである。
【００１９】
横軸はガベージコレクションでメモリ拡張をする回数であり、縦軸はメモリ拡張後の総メモリ量である。
Ｎ1 は初期状態から始まって、メモリ拡張記録変換後に最初にメモリ拡張を必要とする時である。その点は図２（ａ）のｎ1 に対応し、拡張後の総メモリ量は図２（ａ）のｎk の点の総メモリ拡張量に対応する。
【００２０】
Ｎ2 は初期状態から始まって、メモリ拡張記録変換後の２回目にメモリ拡張を必要とする時である。その点は図２（ａ）のｎm に対応し、拡張後の総メモリ量は図２（ａ）のｎp の点の総メモリ拡張量に対応する。
【００２１】
Ｎ3 は初期状態から始まって、メモリ拡張記録変換後の３回目にメモリ拡張を必要とする時である。その点はメモリ拡張量は図２（ａ）のｎp に対応し、拡張後の総メモリ量は図２（ａ）のｎp の点の総メモリ拡張量に対応する。
【００２２】
Ｎ1 、Ｎ2 、Ｎ3 にそれぞれ対応するｎ1 、ｎm 、ｎp はあるメモリ拡張をした時点から一定回数内に総メモリ使用量の増加回数が一定数をこえている時刻を特定する。あるいは、ある一定回数内の総メモリ使用量の増加回数が一定数を越える期間が短い期間で隣接している場合、先に実行された期間の開始時刻の総メモリ使用量を後に実行された期間の終了時刻のメモリ使用量に変更する等で定める等、様々な方法で行なうことが可能である。
【００２３】
図１の本発明の基本構成の動作を説明する。
プログラム実行手段１はプログラムを実行する。プログラム実行手段１がプログラムを実行している時に、ガベージコレクションを必要とすると、ＧＣ手段２はガベージコレクションを実行する。そして、ＧＣ手段２の処理の結果、総メモリの拡張を必要とすると、メモリ拡張手段７は所定量だけメモリを拡張する。
【００２４】
ＧＣ記録手段４はガベージコレクションの記録を取る（例えば、図２（ａ）のガベージコレクション回数と拡張後の総メモリ量の関係の記録をとる）。
拡張メモリ量変換手段５は、ガベージコレクションの記録をもとにガベージコレクションによりメモリ拡張を必要とする時のメモリ拡張量を定めるメモリ拡張チャートを求める（図２（ｂ）の横軸と縦軸の関係を求める）。メモリ拡張チャートは変換後拡張メモリ量保持手段６に保持される。
【００２５】
この後、拡張メモリ量変換手段５は、変換前のメモリ拡張の記録（図２（ａ））をもとに変換後のメモリ拡張チャート（図２（ｂ））を生成する。
そして、次にプログラム実行手段１がプログラムを実行する時においてＧＣ手段２がガベージコレクションを実行し、メモリ拡張を必要とする場合、メモリ拡張手段７はメモリ拡張チャートに従ってメモリを拡張する。
【００２６】
次に、メモリ拡張チャートの生成方法について説明する。但し、以下の方法は１例でありこの方法に限定されるものではない。
例えば、初回にメモリ拡張を必要とする時点（Ｎ1 ）において、総メモリ量の変化率を参照する等により、変換前のｎk の時点での拡張後総メモリ量になるようにメモリ量を拡張する（メモリ拡張をした一定回数後の総メモリ量で求める等、他の方法でも良い）。
【００２７】
同様に、次にメモリ拡張を必要とする時点（Ｎ2 ）で、変換前の時点ｎm での拡張後総メモリ量になるようにメモリ量を拡張する。
同様に、次にメモリ拡張を必要とする時点（Ｎ3 ）で、変換前の時点ｎp での拡張後総メモリ量になるようにメモリ量を拡張する。
【００２８】
本発明によれば、メモリ拡張を効率的に行なうことができ、ガベージコレクションの回数を大幅に減らすことができる。
【００２９】
【発明の実施の形態】
図３は本発明の実施の形態の動作の概略を示す。
Ｓ１  初回の実行において、メモリ拡張時のメモリ使用量の記録を取る。
【００３０】
Ｓ２  メモリ拡張時のメモリ使用量の記録を変更（変換）する。
Ｓ３  変更後のメモリ使用量の記録をもとにメモリ拡張量を決定する。
あらかじめ決めた回数の実行の後の再実行は、初回実行をもとに変更したメモリ拡張チャートをもとに実行するか、あるいは、Ｓ３での実行結果を反映させ、改めてＳ２でメモリ拡張時のメモリ使用量を変更して、新たにメモリ拡張チャートを生成し、そのチャートをもとに実行しても良い。
【００３１】
図４は本発明のメモリ使用量の記録フォーマットの例である。
ガベージコレクションの起動回数ＧＣ回数（メモリ拡張をしなかった場合とメモリ拡張をした場合の双方を含む）と、拡張後のメモリサイズを対応付けて記録したものである（拡張しなかった場合を含む）。
【００３２】
図５は本発明のメモリサイズの記録のフローチャートである。
Ｓ１  ｎ（メモリ拡張回数）、ｇｃ ｃｏｕｎｔ（ガベージコレクション回数）、ＧＣ回数（メモリ拡張をした時点でのガベージコレクション回数）を初期値０にする。
【００３３】
Ｓ２  プログラムが終了したか判定する。終了していればＳ９で処理を終了する。終了していなければ、Ｓ３の処理をする。
Ｓ３  メモリ要求命令か判定する。メモリ要求命令であればＳ４で要求されたメモリを確保できるか判定する。メモリ要求命令でなければＳ８で要求された命令を実行する。
【００３４】
Ｓ４  要求されたメモリを確保できるか判定する。要求されたメモリを確保できれば命令を実行する。要求されたメモリを確保できなければ、Ｓ５でガベージコレクションを起動する。
【００３５】
Ｓ５  ＧＣ起動を行ない、ｇｃ ｃｏｕｎｔを１インクリメントする。
Ｓ６  メモリ拡張が必要か判定する。メモリ拡張を必要としなければメモリ拡張をしないでＳ８で命令を実行する。メモリ拡張が必要であれば、Ｓ７でメモリ拡張をする。
【００３６】
Ｓ７  ｎをｎ＋１とし、ｇｃ ｃｏｕｎｔをＧＣ回数にし、現在のメモリサイズを拡張後メモリサイズにする。
Ｓ８  命令を実行する。
【００３７】
図６は本発明のメモリ拡張記録の変換方法の実施の形態１を示す。
図６（ａ）は、本発明のメモリ拡張記録の例であり、図６（ｂ）、図６（ｃ）は変換後のメモリ拡張チャートである。
【００３８】
メモリ拡張をしたガベージコレクションのｎの時点からのｇｃ ｃｏｕｎｔ数であるｋを定める。そして、メモリ拡張をしたｎの時点のＧＣ回数をＧＣ回数〔ｎ〕としたとき、ＧＣ回数〔ｎ〕＋ｋがＧＣ回数〔ｎ＋１〕を超えていればｎに対応する変換後のＮの時点の総メモリ量を変換前のｎ＋１の時点の総メモリ量とする（図６（ｂ）参照）。そして、ＧＣ回数＋ｋがＧＣ回数〔ｎ＋１〕を超えていなければＧＣ回数〔ｎ＋１〕に対応する変換後の時点をＮ＋１として、その時点のメモリ量を変換前のｎ＋１の時点の総メモリ量とする（変更しない（図６（ｃ）参照））。
【００３９】
図７は本発明のメモリ拡張記録の変換方法の実施の形態２を示す図である。
図７のメモリ拡張量の変換方法は、ある一定ガベージコレクションの起動回数内において総メモリ使用量を増加させる場合が頻繁に出現した場合、先に実行された期間の開始時刻の総メモリ使用量を、後に実行された期間の終了時点のメモリ使用量に変更する方法である。
【００４０】
図７（ａ）は変換前のメモリ拡張回数とメモリ拡張量の関係を示す図である。
図７（ｂ）はメモリ拡張回数の記録を変換した後のメモリ拡張チャートを示す図である。
【００４１】
図７（ａ）は、ある一定ガベージコレクションの起動回数内において総メモリ使用量を増加させる場合が頻繁に出現した場合を示す。このような場合は、先に実行された期間の開始時刻の総メモリ使用量を、後に実行された期間の終了時点のメモリ使用量に変更する。
【００４２】
即ち、変換後のＮ（変換前のｎに対応する）のメモリ拡張量を変換前のｎ＋１に使用したメモリ量にする。さらに、ｎ＋２のメモリ拡張量をＮの拡張量にする。さらに、ｎ＋３のメモリ拡張量をＮの拡張量にする。
【００４３】
このようにして、図７（ｂ）に示すようなメモリ拡張チャートを作成する。
図８は、本発明のメモリサイズ変換方法のフローチャートである。
Ｓ１  変換前のメモリ拡張回数ｎ、変換後のメモリ拡張回数Ｎを０に初期化し、メモリ使用量の記録のサイズをＭＡＸとする。
【００４４】
Ｓ２  ｎがＭＡＸより小さいか判定する。小さければ、Ｓ３の処理を行ない、ＭＡＸより大きいか等しいければ処理を終了する。
Ｓ３  ＧＣ回数〔ｎ〕＋ｋがＧＣ回数〔ｎ＋１〕を超えているか判定し、超えていればＳ４の処理を行ない、超えていなければ、Ｓ５の処理を行なう。
【００４５】
Ｓ４  変換前の拡張後のメモリサイズ〔ｎ＋１〕を変換後の拡張メモリサイズ〔Ｎ〕にする。
Ｓ５  変換前の拡張後のメモリサイズ〔ｎ＋１〕を変換後の拡張メモリサイズ〔Ｎ＋１〕にする。ＧＣ回数〔ｎ＋１〕を変換後のＧＣ回数〔Ｎ＋１〕にする。
【００４６】
Ｓ６  Ｎを１インクリメントする。
Ｓ７  ｎを１インクリメントとし、Ｓ２以降の処理を繰り返す。
図９は、本発明の実施の形態１のフローチャートである。
【００４７】
本実施例によれば、初回の実行のメモリ拡張の記録を求め、次回の実行においてメモリ拡張チャートを求め、そのメモリ拡張チャートに従ってメモリを拡張する。
【００４８】
Ｓ１  ｎを０にし、メモリ記録のサイズをＭＡＸ、拡張後メモリサイズ〔０〕を初期メモリサイズとする。
Ｓ２  プログラムは終了したか判定する。終了していなければ、Ｓ３の処理を行なう。終了していれば、Ｓ１２で処理を終了する。
【００４９】
Ｓ３  メモリ要求命令か判定する。メモリ要求命令であれば、Ｓ４の処理を行ない、メモリ要求命令でなければ、Ｓ１１で命令を実行する。
Ｓ４  要求されたメモリを確保できるか判定し、確保できれば、Ｓ１１で命令を実行する。要求されたメモリを確保できなければ、Ｓ５の処理を行なう。
【００５０】
Ｓ５  ガベージコレクションを起動する。ｇｃ ｃｏｕｎｔを１インクリメントする。
Ｓ６  メモリ拡張が必要か判定する。必要であれば、Ｓ７の処理を行ない、必要でなければ、Ｓ１１で命令を実行する。
【００５１】
Ｓ７  ｎを１インクリメントする。
Ｓ８  ｎがＭＡＸより小さいか判定する。小さければＳ９の処理を行ない、小さくなければＳ１０の処理を行なう。
【００５２】
Ｓ９  メモリ拡張チャートに従ってメモリサイズを拡張する（拡張後メモリサイズ〔ｎ〕をメモリサイズにする）。
Ｓ１０  従来の手法でメモリ拡張を行なう。
【００５３】
Ｓ１１  命令を実行し、Ｓ２以降の処理を繰り返す。
図１０は本発明の実施の形態２のフローチャートである。
本発明の実施の形態２は、ｎがＭＡＸより大きくなった後、従来手法でメモリ拡張を行ない、その拡張後のメモリサイズを現在のメモリサイズとして、そのメモリ拡張チャートの記録をもとに変換後のメモリ拡張チャートを更新する。
【００５４】
Ｓ１  ｎを０にし、メモリ記録のサイズをＭＡＸ、拡張後メモリサイズ〔０〕を初期メモリサイズとする。
Ｓ２  プログラムは終了したか判定する。終了していなければ、Ｓ３の処理を行なう。終了していれば、Ｓ１３で処理を行なう。
【００５５】
Ｓ３  メモリ要求命令か判定する。メモリ要求命令であれば、Ｓ４の処理を行ない、メモリ要求命令でなければ、Ｓ１２で命令を実行する。
Ｓ４  要求されたメモリを確保できるか判定し、確保できれば、Ｓ１２で命令を実行する。要求されたメモリを確保できなければ、Ｓ５の処理を行なう。
【００５６】
Ｓ５  ガベージコレクションを起動する。ｇｃ ｃｏｕｎｔを１インクリメントする。
Ｓ６  メモリ拡張が必要か判定する。必要であれば、Ｓ７の処理を行ない、必要でなければ、Ｓ１２で命令を実行する。
【００５７】
Ｓ７  ｎを１インクリメントする。
Ｓ８  ｎがＭＡＸより小さいか判定する。小さければＳ９の処理を行ない、小さくなければＳ１０の処理を行なう。
【００５８】
Ｓ９  メモリ拡張チャートに従ってメモリサイズを拡張する（拡張後メモリサイズ〔ｎ〕をメモリサイズにする）。
Ｓ１０  従来の手法でメモリ拡張を行なう。
【００５９】
Ｓ１１  現在のメモリサイズを拡張後メモリサイズ〔ｎ〕にする。
Ｓ１２  命令を実行し、Ｓ２以降の処理を繰り返す。
Ｓ１３  ｎがＭＡＸより小さいか判定する。小さくなければＳ１４の処理を行ない、小さければＳ１５で処理を終了する。
【００６０】
Ｓ１４  メモリ使用量の記録を変換する。
本発明によれば、メモリ拡張を早めに行なうことにより、ガベージコレクションの起動回数を減らすことができる。特に、次のような場合に有効である。
【００６１】
プログラムには、多くの新しいメモリを必要とする実行フェーズがある。例えば、プログラムの実行初期段階、プログラムのフェーズ移行前等である。このような場合、ガベージコレクションが多発し、ほとんどの場合メモリ拡張をともなう。このような時、ガベージコレクションによるメモリ回収率（空きサイズ／新メモリサイズ）は非常に低い。
【００６２】
このような実行フェースでは、先にメモリを拡張することにより、ガベージコレクションの回数を大きく削減できる。本発明では特に、実行毎の挙動が酷似している入力に対して有効である。また、実行毎の挙動が異なる場合でも、実行初期段階でのメモリ使用量の増加の振る舞いは酷似しているので、本発明が有効である。
【００６３】
上記の実施の形態の他、実行の初期時に拡張する方法もある。装置に搭載しているメモリ量にある程度余裕がある場合には、あらかじめ必要なメモリを確保しておくことでガベージコレクションの回数を削減できる。この場合には前述の方法で、ｋ＝∞とすれば、初期メモリサイズが前回の最終的なメモリサイズに等しくなる。このようにして初期メモリサイズとすることにより、ガベージコレクション回数を減らすことができる。
【００６４】
【発明の効果】
本発明によれば、メモリ拡張を効率的に行なうことができ、ガベージコレクションにおいてメモリ拡張を必要とする回数を大幅に減らすことができる。そのため、ガベージコレクションを必要とする処理系の動作を高速化することができる。
【００６５】
以上の説明に関して更に以下の項を開示する。
（１）ガベージコレクション実行手段と、ガベージコレクションを実行する毎にガベージコレクションの回数とガベージコレクションを実行した後のメモリ使用量を記録するガベージコレクション記録手段と、ガベージコレクション記録手段の記録に基づいて、ガベージコレクションの実行によりメモリ拡張を必要とする場合の拡張メモリ量を定めたメモリ拡張チャートを求める拡張メモリ量変換手段と、拡張メモリ量変換手段の求めた拡張メモリ量を保持する拡張メモリ量保持手段と、メモリ拡張を必要とする場合に、拡張メモリ量保持手段を参照し、該メモリ拡張チャートを参照し、拡張メモリ量を決定するメモリ拡張手段とを備えるメモリ管理装置において、拡張メモリ量変換手段は、ある一定のガベージコレクションの起動回数から総メモリ使用量の増加回数が一定数を超えている時点を求め、その時刻の総メモリ使用量を一定回数後の総メモリ使用量とする。
【００６６】
（２）ガベージコレクション実行手段と、ガベージコレクションを実行する毎にガベージコレクションの回数とガベージコレクションを実行した後のメモリ使用量を記録するガベージコレクション記録手段と、ガベージコレクション記録手段の記録に基づいて、ガベージコレクションの実行によりメモリ拡張を必要とする場合の拡張メモリ量を定めたメモリ拡張チャートを求める拡張メモリ量変換手段と、拡張メモリ量変換手段の求めた拡張メモリ量を保持する拡張メモリ量保持手段と、メモリ拡張を必要とする場合に、拡張メモリ量保持手段を参照し、該メモリ拡張チャートを参照し、拡張メモリ量を決定するメモリ拡張手段とを備えるメモリ管理装置において、拡張メモリ量変換手段は、ある一定のガベージコレクションの起動回数内において総メモリ使用量を増加させる場合が頻繁に出現した場合、先に実行された期間の開始時刻の総メモリ使用量を、後に実行された期間の終了時点のメモリ使用量に変更する。
【００６７】
（３）  上記（１）もしくは（２）のメモリ管理装置であって、予め求められた変換後のメモリ量のガベージコレクションの回数Ｎより多い回数が実行された時、Ｎを超えて実行されたガベージコレクションの記録を追加して記録する。
【００６８】
（４）ガベージコレクション実行手段と、ガベージコレクションを実行する毎にガベージコレクションの回数とガベージコレクションを実行した後のメモリ使用量を記録するガベージコレクション記録手段と、ガベージコレクション記録手段の記録に基づいて、ガベージコレクションの実行によりメモリ拡張を必要とする場合の拡張メモリ量を定めたメモリ拡張チャートを求める拡張メモリ量変換手段と、拡張メモリ量変換手段の求めた拡張メモリ量を保持する拡張メモリ量保持手段と、メモリ拡張を必要とする場合に、拡張メモリ量保持手段を参照し、該メモリ拡張チャートを参照し、拡張メモリ量を決定するメモリ拡張手段とを備えるメモリ管理装置において、拡張メモリ量変換手段は、前回以前のプログラムの実行終了時の総メモリ量の記録に従って総メモリ量を求め、実行の初期の時点で該総メモリ量を確保する。
【図面の簡単な説明】
【図１】本発明の基本構成を示す図である。
【図２】本発明の基本構成の動作説明図である。
【図３】本発明の実施の形態の動作概略説明図である。
【図４】本発明のメモリ使用量の記録フォーマットの例を示す図である。
【図５】本発明のメモリサイズの記録のフローチャートを示す図である。
【図６】本発明のメモリ拡張記録の変換方法の実施の形態１を示す図である。
【図７】本発明のメモリ拡張記録の変換方法の実施の形態２を示す図である。
【図８】本発明のメモリサイズの記録の変換方法のフローチャートを示す図である。
【図９】本発明の実施の形態１のフローチャートを示す図である。
【図１０】本発明の実施の形態２のフローチャートを示す図である。
【符号の説明】
１：プログラム実行手段
２：ＧＣ手段
３：メモリ
４：ＧＣ記録手段
５：拡張メモリ量変換手段
６：拡張メモリ量保持手段
７：メモリ拡張手段
【図１】
0003795669.tif 000002
【図２】
0003795669.tif 000003
【図３】
0003795669.tif 000004
【図４】
0003795669.tif 000005
【図５】
0003795669.tif 000006
【図６】
0003795669.tif 000007
【図７】
0003795669.tif 000008
【図８】
0003795669.tif 000009
【図９】
0003795669.tif 000010
【図１０】
0003795669.tif 000011