TOP > 国内特許検索 > メモリ管理方法、メモリ管理装置、及びメモリ管理プログラムが記録されている記録媒体

メモリ管理方法、メモリ管理装置、及びメモリ管理プログラムが記録されている記録媒体

国内特許コード P09A014466
整理番号 1563
掲載日 2009年5月8日
出願番号 特願2007-026111
公開番号 特開2008-191952
登録番号 特許第4769946号
出願日 平成19年2月5日(2007.2.5)
公開日 平成20年8月21日(2008.8.21)
登録日 平成23年7月1日(2011.7.1)
発明者
  • 鵜川 始陽
  • 湯淺 太一
出願人
  • 国立大学法人京都大学
発明の名称 メモリ管理方法、メモリ管理装置、及びメモリ管理プログラムが記録されている記録媒体
発明の概要

【課題】メモリ管理方法、メモリ管理装置、及びメモリ管理プログラムが記録されている記録媒体において、連続した利用可能領域を生成する処理を中断して、主プログラムが処理を行う。
【解決手段】メモリ管理プログラムは、コンパクション処理中に、主プログラムがヒープ領域にデータを書込むとき、データの書込み先が、複製元オブジェクトの記録領域又は複製先オブジェクトの記録領域のいずれかであるかを判断し(S31)、データの書込み先がいずれかであると判断したとき(S32でYES)、書込むデータを、複製元及び複製先オブジェクトの記録領域の両方に書込む(S33)。そのため、コンパクション処理中に主プログラムが書込み処理を行っても複製元オブジェクトと複製先オブジェクトとのデータの整合性を保つことができる。
【選択図】図10

従来技術、競合技術の概要


Java(登録商標)言語等の動的にデータを生成するプログラミング言語を用いて作成されたプログラム(以下、主プログラム)は、生成したデータを動的にメモリ領域に記録するので、主プログラムの実行が進むことにより不要となったメモリ領域のデータを消去しなければ主プログラムが利用可能な空き領域(以下、利用可能領域という)が不足してしまう。そのため、従来から、メモリ領域内の不要なデータを消去し、メモリ領域を再利用する方法が知られている。



メモリ領域内の不要なデータを消去し、その領域を再利用できるようにする処理はガーベッジコレクション(以下、GC)と呼ばれる。GC処理によって再利用可能となった利用可能領域を一箇所に集めて連続した領域にする処理はコンパクションと呼ばれる。メモリ領域を再利用できるようにするこれら一連の処理は、主プログラムを実行する場合に不可欠な処理である。主プログラムが実時間性を必要とする処理を実行する場合、GC処理及びコンパクション処理は、主プログラムの処理と実質的に並行して実行される必要がある。



コンパクション処理は、利用可能領域を一箇所に集めるために、メモリ領域内の必要なデータを移動させた後、移動元データの位置を参照するポインタの参照先を、移動先データの位置に更新する処理を行う。コンパクション処理がデータを移動した後、ポインタの参照先を更新する前に、主プログラムが移動元データを参照したとき、ここにデータが存在しないため、主プログラムが処理異常を発生する。そのため、移動元データの位置を参照する全てのポインタの参照先が、移動先データの位置に更新されるまで、コンパクション処理を中断させることができない。その結果、主プログラムの実時間性が損なわれる。



GC処理は、本発明者の一人により特許第3530887号に提案された発明によって、主プログラムの実時間性を損なわずに行うことができる。しかし、この発明は、連続した利用可能領域を生成するコンパクション処理を中断することができず、コンパクション処理が終了するまで主プログラムが処理を行うことができない。



ところで、従来から、小型機器である携帯電話等には、組込み用Java(登録商標)処理系としてKVM(K virtual machine)が多く使われている。KVMには、上述したGC処理及びコンパクション処理を行うプログラム(以下、メモリ管理プログラム)が採用されており、このプログラムは、通常、メモリ領域内の利用可能領域が不足してきたときに、自動的に実行される。その結果、メモリ管理プログラムの処理を中断させることができないので、主プログラムの実行が数ミリ秒~数秒の間中断させられることがある。



これに対して、従来の携帯電話は、主プログラムが実時間性を必要とする処理、例えば、なめらかな動作が必要なアニメーションやゲームのキャラクタを画面上で動かす処理などを行う場合、主プログラムの実行中にメモリ管理プログラムが自動的に実行されないように、実時間性を必要とする処理を行う直前に、強制的にメモリ管理プログラムを実行させるものがある。これにより、利用可能領域のサイズが大きくなり、しばらくの間はメモリ管理プログラムを実行する必要がないので、主プログラムは、実時間性を損なわずに処理を行うことができる。



しかし、実時間性を必要とする処理の内容の違いや、携帯電話の機種によるメモリ領域のサイズや主プログラムを処理する実行処理速度の違いにより、強制的にメモリ管理プログラムを実行させるタイミングが異なることがある。そのため、開発者は、これらの違いを考慮して、メモリ管理プログラムを強制的に実行させるタイミングを設定しなければならず、開発に手間がかかり、開発効率が低下するという問題がある。



ところで、非特許文献1には、GC処理後のメモリ領域全体に対して、例えば16分割したメモリ領域のうちの1つの領域を限定領域とし、この限定領域内のデータを、限定領域外のメモリ領域に一括して移動させた後、限定領域内のデータを参照するポインタの参照先を一括して更新するコンパクション処理が開示されている。しかし、このコンパクション処理では、データを移動した後に移動元を参照する全てのポインタの参照先を更新するまでの処理を一括して実行する必要があるので、コンパクション処理を中断して主プログラムの処理を行うことができない。そのため、主プログラムの実時間性が損なわれてしまう。



また、非特許文献2には、メモリ領域を任意の数に分割し、このうちの1つをデータ移動先領域として設定した後、主プログラムがデータ移動先領域を除くメモリ領域にデータを記録する。そして、データ移動先領域を除くメモリ領域のうちの1つをデータ移動元領域とし、このデータ移動元領域のデータをデータ移動先領域に移動させることにより連続した利用可能領域を生成する処理が開示されている。しかし、この処理も、非特許文献1と同様に、コンパクション処理を中断して主プログラムを実行することができないので、主プログラムの実時間性が損なわれてしまう。また、この処理では、主プログラムがメモリ領域にデータが記録する前に、データ移動先領域を設定しなければならないので、メモリ領域に記録されるデータの記録状態等を加味した後に、データ移動先領域を設定することができず、効率良く利用可能領域を生成することができない。



ところで、一般的に、主プログラムがメモリ領域からデータを読出す回数は、主プログラムがメモリ領域にデータを書込む回数よりもはるかに多い。そのため、データの読出し処理に特別な処理を追加すると、データの読出し時にオーバヘッドが掛かり、主プログラムの処理の実行効率が悪くなることがある。上述した非特許文献2の処理において、各データの先頭に最新のデータの位置を指すフォワーディングポインタを付加し、主プログラムがデータ要素を読み出すとき、フォワーディングポインタを辿って最新のデータの位置からデータ要素を読み出す方法が知られている。しかし、この処理でも、データの読出し時にオーバヘッドが掛かり、主プログラムの処理の実行効率が悪くなることがある。

【非特許文献1】Parallel Incremental Compaction (US 2004/0128329 A1)

【非特許文献2】Incremental Incrementally Compacting Garbage Collection(SIGPLAN Notice 22(7) pp.253-263)

産業上の利用分野


本発明は、メモリ管理方法、メモリ管理装置、及びメモリ管理プログラムが記録されている記録媒体に関する。

特許請求の範囲 【請求項1】
メモリ中に、動的にデータを生成するプログラム(以下、主プログラム)の実行等に利用されるデータが記録されたデータ記録領域と、主プログラムが実行中に使用するデータ要素を含むデータ(以下、オブジェクト)を記録するためのヒープ領域とが設けられ、
主プログラムの実行が進むことにより不要となった前記ヒープ領域のオブジェクトを消去し、該ヒープ領域に利用可能な空き領域(以下、利用可能領域)を生成すると共に、該ヒープ領域に連続した利用可能領域を生成するために、該ヒープ領域に記録されているオブジェクトを移動させるメモリ管理方法において、
前記オブジェクトは、オブジェクトの複製先の位置又は複製元の位置を記録するための複製位置ポインタをさらに含み、
前記データ記録領域に、前記オブジェクトの位置を参照するオブジェクト位置ポインタが記録され、
前記ヒープ領域に連続した利用可能領域を生成する限定範囲を設定する範囲設定ステップと、
前記限定範囲内に含まれる複製元オブジェクトをこの限定範囲外の利用可能領域に複製先オブジェクトとして複製すると共に、該複製元オブジェクト及び該複製先オブジェクトの複製位置ポインタの参照先を互いのオブジェクトの位置に設定するオブジェクト複製ステップと、
前記データ記録領域に記録されている、前記複製元オブジェクトの位置を参照するオブジェクト位置ポインタの参照先を、前記オブジェクト複製ステップにより複製された複製先オブジェクトの位置に更新する第1ポインタ更新ステップと、
前記限定範囲の領域を利用可能領域にする限定範囲利用可能化ステップと、
前記オブジェクト複製ステップを実行中に、前記主プログラムが前記ヒープ領域に記録されたオブジェクトの記録領域にデータの書込み処理を行うとき、又は書込み処理を行った後、データの書込み先の記録領域が、前記複製元オブジェクトの記録領域又は前記複製先オブジェクトの記録領域のいずれかであるかを判断する複製判断ステップと、
前記複製判断ステップにより書込み先が前記複製元オブジェクトの記録領域又は前記複製先オブジェクトの記録領域のいずれかであると判断されたとき、前記主プログラムが書込み処理を行うデータを、前記複製元オブジェクトの記録領域及び前記複製先オブジェクトの記録領域の両方に書込みを行う複製書込みステップと、を含み、
前記データ記録領域中に、前記主プログラムが実行する関数の実行結果等を一時的に記録する関数フレームが積み上げられて配置されるスタック領域が設けられ、
前記スタック領域内の前記関数フレームを上位から下位に向かって走査し、この順に該スタック領域に記録されている、前記複製元オブジェクトの位置を参照するオブジェクト位置ポインタの参照先を、前記オブジェクト複製ステップにより複製された複製先オブジェクトの位置に更新する第3ポインタ更新ステップと、
前記第3ポインタ更新ステップによるオブジェクト位置ポインタの更新処理を中断するときに、該第3ポインタ更新ステップによる処理が最後に行われた前記関数フレームに、関数の実行を制御する障壁を設定する障壁設定ステップと、をさらに備え、
前記第1ポインタ更新ステップは、前記スタック領域を除く前記データ記録領域に記録されている、前記複製元オブジェクトの位置を参照するオブジェクト位置ポインタの参照先を、前記複製先オブジェクトの位置に更新し、
前記障壁が、関数の実行完了後、前記第3ポインタ更新ステップによる処理を再開させることを特徴とするメモリ管理方法。

【請求項2】
メモリ中に、動的にデータを生成するプログラム(以下、主プログラム)の実行等に利用されるデータが記録されたデータ記録領域と、主プログラムが実行中に使用するデータ要素を含むデータ(以下、オブジェクト)を記録するためのヒープ領域とが設けられ、
主プログラムの実行が進むことにより不要となった前記ヒープ領域のオブジェクトを消去し、該ヒープ領域に利用可能な空き領域(以下、利用可能領域)を生成すると共に、該ヒープ領域に連続した利用可能領域を生成するために、該ヒープ領域に記録されているオブジェクトを移動させるメモリ管理方法において、
前記データ記録領域に、前記オブジェクトの位置を参照するオブジェクト位置ポインタが記録され、
前記メモリ中に、オブジェクトの位置を記録するオブジェクト位置記録領域がさらに設けられ、
前記ヒープ領域に連続した利用可能領域を生成する限定範囲を設定する範囲設定ステップと、
前記限定範囲内に含まれる複製元オブジェクトをこの限定範囲外の利用可能領域に複製先オブジェクトとして複製すると共に、前記オブジェクト位置記録領域に、該複製元オブジェクトの位置及び該複製先オブジェクの位置を記録するオブジェクト複製ステップと、
前記データ記録領域に記録されている、前記複製元オブジェクトの位置を参照するオブジェクト位置ポインタの参照先を、前記オブジェクト複製ステップにより複製された複製先オブジェクトの位置に更新する第1ポインタ更新ステップと、
前記限定範囲の領域を利用可能領域にする限定範囲利用可能化ステップと、
前記オブジェクト複製ステップを実行中に、前記主プログラムが前記ヒープ領域に記録されたオブジェクトの記録領域にデータの書込み処理を行うとき、又は書込み処理を行った後、データの書込み先の記録領域が、前記複製元オブジェクトの記録領域又は前記複製先オブジェクトの記録領域のいずれかであるかを判断する複製判断ステップと、
前記複製判断ステップにより書込み先が前記複製元オブジェクトの記録領域又は前記複製先オブジェクトの記録領域のいずれかであると判断されたとき、前記主プログラムが書込み処理を行うデータを、前記複製元オブジェクトの記録領域及び前記複製先オブジェクトの記録領域の両方に書込みを行う複製書込みステップと、を含み、
前記データ記録領域中に、前記主プログラムが実行する関数の実行結果等を一時的に記録する関数フレームが積み上げられて配置されるスタック領域が設けられ、
前記スタック領域内の前記関数フレームを上位から下位に向かって走査し、この順に該スタック領域に記録されている、前記複製元オブジェクトの位置を参照するオブジェクト位置ポインタの参照先を、前記オブジェクト複製ステップにより複製された複製先オブジェクトの位置に更新する第3ポインタ更新ステップと、
前記第3ポインタ更新ステップによるオブジェクト位置ポインタの更新処理を中断するときに、該第3ポインタ更新ステップによる処理が最後に行われた前記関数フレームに、関数の実行を制御する障壁を設定する障壁設定ステップと、をさらに備え、
前記第1ポインタ更新ステップは、前記スタック領域を除く前記データ記録領域に記録されている、前記複製元オブジェクトの位置を参照するオブジェクト位置ポインタの参照先を、前記複製先オブジェクトの位置に更新し、
前記障壁が、関数の実行完了後、前記第3ポインタ更新ステップによる処理を再開させることを特徴とするメモリ管理方法。

【請求項3】
前記オブジェクトは、前記データ要素として前記オブジェクト位置ポインタをさらに含み、
前記複製元オブジェクトの位置を参照する前記ヒープ領域内のオブジェクト位置ポインタの参照先を、前記オブジェクト複製ステップにより複製された複製先オブジェクトの位置に更新する第2ポインタ更新ステップと、
前記第2ポインタ更新ステップを実行中に、前記主プログラムが前記ヒープ領域に前記複製元オブジェクトの位置を参照するオブジェクト位置ポインタの書込み処理を行うとき、又は書込み処理を行った後、該オブジェクト位置ポインタの参照先を、前記複製先オブジェクトの位置に変更する参照先変更ステップと、
前記第2ポインタ更新ステップの実行中に、前記主プログラムが2つのオブジェクト位置ポインタの参照先が同じオブジェクトの位置であるかどうかの検査処理を行うとき、該2つのオブジェクト位置ポインタのうちの一方が前記複製元オブジェクトの位置を、他方が前記複製先オブジェクトの位置を参照している場合、同一のオブジェクトを参照していると判断する同一判断ステップと、をさらに備え、
前記複製判断ステップは、前記オブジェクト複製ステップ、又は前記第2ポインタ更新ステップを実行中に、前記主プログラムが前記ヒープ領域に記録されたオブジェクトの記録領域にデータの書込み処理を行うとき、又は書込み処理を行った後、データの書込み先の記録領域が、前記複製元オブジェクトの記録領域又は前記複製先オブジェクトの記録領域のいずれかであるかを判断することを特徴とする請求項1又は請求項2に記載のメモリ管理方法。

【請求項4】
前記ヒープ領域内に、前記スタック領域を除く前記データ記録領域の一部又は全部を割当て、該ヒープ領域内の該データ記録領域外の領域を、請求項1乃至請求項3のいずれかに記載のヒープ領域とし、
前記範囲設定ステップは、前記ヒープ領域内の前記データ記録領域が割当てられた領域に対して限定範囲を設定することができ、
前記第1ポインタ更新ステップは、
前記限定範囲内の前記データ記録領域に記録されている、前記複製元オブジェクトの位置を参照するオブジェクト位置ポインタの参照先を、前記複製先オブジェクトの位置に更新すると共に、該限定範囲内の前記データ記録領域を、前記ヒープ領域内の利用可能領域に移動させ、
前記限定範囲及び前記スタック領域を除く前記データ記録領域に記録されている、前記複製元オブジェクトの位置を参照するオブジェクト位置ポインタの参照先を、前記複製先オブジェクトの位置に更新することを特徴とする請求項1乃至請求項3のいずれかに記載のメモリ管理方法。

【請求項5】
前記ヒープ領域内に、前記スタック領域を含む前記データ記録領域の一部又は全部を割当て、該ヒープ領域内の該データ記録領域外の領域を、請求項1乃至請求項3のいずれかに記載のヒープ領域とし、
前記範囲設定ステップは、前記ヒープ領域内の前記データ記録領域が割当てられた領域に対して限定範囲を設定することができ、
前記第1ポインタ更新ステップは、
前記限定範囲内の前記スタック領域を除く前記データ記録領域に記録されている、前記複製元オブジェクトの位置を参照するオブジェクト位置ポインタの参照先を、前記複製先オブジェクトの位置に更新すると共に、該限定範囲内に割当てられた、前記スタック領域を除く該データ記録領域を、前記ヒープ領域内の利用可能領域に移動させ、
前記限定範囲外の前記スタック領域を除く前記データ記録領域に記録されている、前記複製元オブジェクトの位置を参照するオブジェクト位置ポインタの参照先を、前記複製先オブジェクトの位置に更新し、
前記第3ポインタ更新ステップは、
前記ヒープ領域内に割当てられた前記スタック領域内の前記関数フレームを上位から下位に向かって走査し、前記限定範囲内の前記関数フレームに記録されている、前記複製元オブジェクトの位置を参照するオブジェクト位置ポインタの参照先を、前記複製先オブジェクトの位置に更新すると共に、該限定範囲内の該関数フレームを、該ヒープ領域内の利用可能領域に移動させ、
前記限定範囲外の前記関数フレームに記録されている、前記複製元オブジェクトの位置を参照するオブジェクト位置ポインタの参照先を、前記複製先オブジェクトの位置に更新し、
前記障壁設定ステップは、前記第3ポインタ更新処理による処理を中断して、前記主プログラムを実行するときに、前記障壁を、該第3ポインタ更新処理による処理が最後に行われた前記関数フレームに設定することを特徴とする請求項1乃至請求項3のいずれかに記載のメモリ管理方法。

【請求項6】
メモリ中に、動的にデータを生成するプログラム(以下、主プログラム)の実行等に利用されるデータが記録されたデータ記録領域と、主プログラムが実行中に使用するデータ要素を含むデータ(以下、オブジェクト)を記録するためのヒープ領域とが設けられ、
主プログラムの実行が進むことにより不要となった前記ヒープ領域のオブジェクトを消去し、該ヒープ領域に利用可能な空き領域(以下、利用可能領域)を生成すると共に、該ヒープ領域に連続した利用可能領域を生成するために、該ヒープ領域に記録されているオブジェクトを移動させるメモリ管理装置において、
前記オブジェクトは、オブジェクトの複製先の位置又は複製元の位置を記録するための複製位置ポインタをさらに含み、
前記データ記録領域に、前記オブジェクトの位置を参照するオブジェクト位置ポインタが記録され、
前記ヒープ領域に連続した利用可能領域を生成する限定範囲を設定する範囲設定手段と、
前記限定範囲内に含まれる複製元オブジェクトをこの限定範囲外の利用可能領域に複製先オブジェクトとして複製すると共に、該複製元オブジェクト及び該複製先オブジェクトの複製位置ポインタの参照先を互いのオブジェクトの位置に設定するオブジェクト複製手段と、
前記データ記録領域に記録されている、前記複製元オブジェクトの位置を参照するオブジェクト位置ポインタの参照先を、前記オブジェクト複製手段により複製された複製先オブジェクトの位置に更新する第1ポインタ更新手段と、
前記限定範囲の領域を利用可能領域にする限定範囲利用可能化手段と、
前記オブジェクト複製手段を実行中に、前記主プログラムが前記ヒープ領域に記録されたオブジェクトの記録領域にデータの書込み処理を行うとき、又は書込み処理を行った後、データの書込み先の記録領域が、前記複製元オブジェクトの記録領域又は前記複製先オブジェクトの記録領域のいずれかであるかを判断する複製判断手段と、
前記複製判断手段により書込み先が前記複製元オブジェクトの記録領域又は前記複製先オブジェクトの記録領域のいずれかであると判断されたとき、前記主プログラムが書込み処理を行うデータを、前記複製元オブジェクトの記録領域及び前記複製先オブジェクトの記録領域の両方に書込みを行う複製書込み手段と、を備え
前記データ記録領域中に、前記主プログラムが実行する関数の実行結果等を一時的に記録する関数フレームが積み上げられて配置されるスタック領域が設けられ、
前記スタック領域内の前記関数フレームを上位から下位に向かって走査し、この順に該スタック領域に記録されている、前記複製元オブジェクトの位置を参照するオブジェクト位置ポインタの参照先を、前記オブジェクト複製手段により複製された複製先オブジェクトの位置に更新する第3ポインタ更新手段と、
前記第3ポインタ更新手段によるオブジェクト位置ポインタの更新処理を中断するときに、該第3ポインタ更新手段による処理が最後に行われた前記関数フレームに、関数の実行を制御する障壁を設定する障壁設定手段と、をさらに備え、
前記第1ポインタ更新手段は、前記スタック領域を除く前記データ記録領域に記録されている、前記複製元オブジェクトの位置を参照するオブジェクト位置ポインタの参照先を、前記複製先オブジェクトの位置に更新し、
前記障壁が、関数の実行完了後、前記第3ポインタ更新手段による処理を再開させることを特徴とするメモリ管理装置。

【請求項7】
メモリ中に、動的にデータを生成するプログラム(以下、主プログラム)の実行等に利用されるデータが記録されたデータ記録領域と、主プログラムが実行中に使用するデータ要素を含むデータ(以下、オブジェクト)を記録するためのヒープ領域とが設けられ、
主プログラムの実行が進むことにより不要となった前記ヒープ領域のオブジェクトを消去し、該ヒープ領域に利用可能な空き領域(以下、利用可能領域)を生成すると共に、該ヒープ領域に連続した利用可能領域を生成するために、該ヒープ領域に記録されているオブジェクトを移動させるメモリ管理装置において、
前記データ記録領域に、前記オブジェクトの位置を参照するオブジェクト位置ポインタが記録され、
前記メモリ中に、オブジェクトの位置を記録するオブジェクト位置記録領域がさらに設けられ、
前記ヒープ領域に連続した利用可能領域を生成する限定範囲を設定する範囲設定手段と、
前記限定範囲内に含まれる複製元オブジェクトをこの限定範囲外の利用可能領域に複製先オブジェクトとして複製すると共に、前記オブジェクト位置記録領域に、該複製元オブジェクトの位置及び該複製先オブジェクの位置を記録するオブジェクト複製手段と、
前記データ記録領域に記録されている、前記複製元オブジェクトの位置を参照するオブジェクト位置ポインタの参照先を、前記オブジェクト複製手段により複製された複製先オブジェクトの位置に更新する第1ポインタ更新手段と、
前記限定範囲の領域を利用可能領域にする限定範囲利用可能化手段と、
前記オブジェクト複製手段を実行中に、前記主プログラムが前記ヒープ領域に記録されたオブジェクトの記録領域にデータの書込み処理を行うとき、又は書込み処理を行った後、データの書込み先の記録領域が、前記複製元オブジェクトの記録領域又は前記複製先オブジェクトの記録領域のいずれかであるかを判断する複製判断手段と、
前記複製判断手段により書込み先が前記複製元オブジェクトの記録領域又は前記複製先オブジェクトの記録領域のいずれかであると判断されたとき、前記主プログラムが書込み処理を行うデータを、前記複製元オブジェクトの記録領域及び前記複製先オブジェクトの記録領域の両方に書込みを行う複製書込み手段と、を備え
前記データ記録領域中に、前記主プログラムが実行する関数の実行結果等を一時的に記録する関数フレームが積み上げられて配置されるスタック領域が設けられ、
前記スタック領域内の前記関数フレームを上位から下位に向かって走査し、この順に該スタック領域に記録されている、前記複製元オブジェクトの位置を参照するオブジェクト位置ポインタの参照先を、前記オブジェクト複製手段により複製された複製先オブジェクトの位置に更新する第3ポインタ更新手段と、
前記第3ポインタ更新手段によるオブジェクト位置ポインタの更新処理を中断するときに、該第3ポインタ更新手段による処理が最後に行われた前記関数フレームに、関数の実行を制御する障壁を設定する障壁設定手段と、をさらに備え、
前記第1ポインタ更新手段は、前記スタック領域を除く前記データ記録領域に記録されている、前記複製元オブジェクトの位置を参照するオブジェクト位置ポインタの参照先を、前記複製先オブジェクトの位置に更新し、
前記障壁が、関数の実行完了後、前記第3ポインタ更新手段による処理を再開させることを特徴とするメモリ管理装置。

【請求項8】
前記オブジェクトは、前記データ要素として前記オブジェクト位置ポインタをさらに含み、
前記複製元オブジェクトの位置を参照する前記ヒープ領域内のオブジェクト位置ポインタの参照先を、前記オブジェクト複製手段により複製された複製先オブジェクトの位置に更新する第2ポインタ更新手段と、
前記第2ポインタ更新手段を実行中に、前記主プログラムが前記ヒープ領域に前記複製元オブジェクトの位置を参照するオブジェクト位置ポインタの書込み処理を行うとき、又は書込み処理を行った後、該オブジェクト位置ポインタの参照先を、前記複製先オブジェクトの位置に変更する参照先変更手段と、
前記第2ポインタ更新手段の実行中に、前記主プログラムが2つのオブジェクト位置ポインタの参照先が同じオブジェクトの位置であるかどうかの検査処理を行うとき、該2つのオブジェクト位置ポインタのうちの一方が前記複製元オブジェクトの位置を、他方が前記複製先オブジェクトの位置を参照している場合、同一のオブジェクトを参照していると判断する同一判断手段と、をさらに備え、
前記複製判断手段は、前記オブジェクト複製手段、又は前記第2ポインタ更新手段を実行中に、前記主プログラムが前記ヒープ領域に記録されたオブジェクトの記録領域にデータの書込み処理を行うとき、又は書込み処理を行った後、データの書込み先の記録領域が、前記複製元オブジェクトの記録領域又は前記複製先オブジェクトの記録領域のいずれかであるかを判断することを特徴とする請求項6又は請求項7に記載のメモリ管理装置。

【請求項9】
前記ヒープ領域内に、前記スタック領域を除く前記データ記録領域の一部又は全部を割当て、該ヒープ領域内の該データ記録領域外の領域を、請求項6乃至請求項8のいずれかに記載のヒープ領域とし、
前記範囲設定手段は、前記ヒープ領域内の前記データ記録領域が割当てられた領域に対して限定範囲を設定することができ、
前記第1ポインタ更新手段は、
前記限定範囲内の前記データ記録領域に記録されている、前記複製元オブジェクトの位置を参照するオブジェクト位置ポインタの参照先を、前記複製先オブジェクトの位置に更新すると共に、該限定範囲内の前記データ記録領域を、前記ヒープ領域内の利用可能領域に移動させ、
前記限定範囲及び前記スタック領域を除く前記データ記録領域に記録されている、前記複製元オブジェクトの位置を参照するオブジェクト位置ポインタの参照先を、前記複製先オブジェクトの位置に更新することを特徴とする請求項6乃至請求項8のいずれかに記載のメモリ管理装置。

【請求項10】
前記ヒープ領域内に、前記スタック領域を含む前記データ記録領域の一部又は全部を割当て、該ヒープ領域内の該データ記録領域外の領域を、請求項6乃至請求項8のいずれかに記載のヒープ領域とし、
前記範囲設定手段は、前記ヒープ領域内の前記データ記録領域が割当てられた領域に対して限定範囲を設定することができ、
前記第1ポインタ更新手段は、
前記限定範囲内の前記スタック領域を除く前記データ記録領域に記録されている、前記複製元オブジェクトの位置を参照するオブジェクト位置ポインタの参照先を、前記複製先オブジェクトの位置に更新すると共に、該限定範囲内に割当てられた、前記スタック領域を除く該データ記録領域を、前記ヒープ領域内の利用可能領域に移動させ、
前記限定範囲外の前記スタック領域を除く前記データ記録領域に記録されている、前記複製元オブジェクトの位置を参照するオブジェクト位置ポインタの参照先を、前記複製先オブジェクトの位置に更新し、
前記第3ポインタ更新手段は、
前記ヒープ領域内に割当てられた前記スタック領域内の前記関数フレームを上位から下位に向かって走査し、前記限定範囲内の前記関数フレームに記録されている、前記複製元オブジェクトの位置を参照するオブジェクト位置ポインタの参照先を、前記複製先オブジェクトの位置に更新すると共に、該限定範囲内の該関数フレームを、該ヒープ領域内の利用可能領域に移動させ、
前記限定範囲外の前記関数フレームに記録されている、前記複製元オブジェクトの位置を参照するオブジェクト位置ポインタの参照先を、前記複製先オブジェクトの位置に更新し、
前記障壁設定手段は、前記第3ポインタ更新処理による処理を中断して、前記主プログラムを実行するときに、前記障壁を、該第3ポインタ更新処理による処理が最後に行われた前記関数フレームに設定することを特徴とする請求項6乃至請求項8のいずれかに記載のメモリ管理装置。

【請求項11】
請求項1乃至請求項5のいずれか一項に記載のメモリ管理方法をコンピュータに実行させるためのメモリ管理プログラムが記録されているコンピュータ読取可能な記録媒体。
産業区分
  • 記憶装置
国際特許分類(IPC)
Fターム
画像

※ 画像をクリックすると拡大します。

JP2007026111thum.jpg
出願権利状態 権利存続中
ライセンスをご希望の方、特許の内容に興味を持たれた方は、下記までご連絡ください。


PAGE TOP

close
close
close
close
close
close
close