(57)【要約】【課題】コンピュータ・システムで実行中のソフトウエア・アプリケーションに対するメモリ管理の方法を提供する。【解決手段】該方法は、メモリ・マネージャが、ソフトウエア・アプリケーションに対し、第一割当てスペースとして所定のサイズを有するメモリの第一ユニットを供給するステップと、ソフトウエア・アプリケーションが該第一割当てスペースにデータを格納するステップと、さらに、ａ）メモリ・マネージャが、該ソフトウエア・アプリケーションに対するメモリの第二ユニットを供給する工程、ｂ）第一割当てスペース中の活動状態のデータを識別し、該活動状態データをメモリの第二ユニットにコピーする工程であって、該活動状態データには、少なくともソフトウエア・アプリケーションが使用中のデータが含まれる、工程、ｃ）第一割当てスペース中の活動状態データが不活動状態になったことを表示する工程、ｄ）第一割当てスペースの一部を、メモリの第二ユニットと論理的に切れ目なくマップし、ソフトウエア・アプリケーションに対する第二割当てを設定する工程であって、該第二割当てスペースは所定サイズと等しいサイズを有する、工程、およびｅ）第一割当ての残りの部分を、再使用に適したメモリのユニットとして、メモリ・マネージャに返却する工程、を介して、第一割当てスペース中の不活動状態データを破棄するステップと、を含む。【選択図】図３
2011505042.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ・システムで実行中のソフトウエア・アプリケーションに対するメモリ管理の方法であって、
前記方法は、
メモリ・マネージャが、前記ソフトウエア・アプリケーションに対し、第一割当てスペースとして、所定のサイズを有する、メモリの第一ユニットを供給するステップと、
前記ソフトウエア・アプリケーションが、前記第一割当てスペースにデータを格納するステップと、
ａ）前記メモリ・マネージャが、前記ソフトウエア・アプリケーションに対しメモリの第二ユニットを供給する工程、
ｂ）前記第一割当てスペース中の活動中状態データを識別し、前記活動中状態データを前記メモリの第二ユニットにコピーする工程であって、前記活動中状態データは、少なくとも前記ソフトウエア・アプリケーションが使用中であるデータを含む、工程、
ｃ）前記第一割当てスペース中の前記活動中状態データが不活動状態になったことを表示する工程、
ｄ）前記第一割当てスペースを前記メモリの第二ユニットと論理的に切れ目なくマッピングし、前記ソフトウエア・アプリケーションの第二割当てスペースを設定する工程であって、前記第二割当てスペースは、前記所定のサイズと等しいサイズを有する、工程、および
ｅ）前記第一割当ての残りの部分を、再使用に適したメモリ・ユニットとして前記メモリ・マネージャに返却する工程、
を介して、前記第一割当てスペース中の不活動状態データを破棄するステップと、
を含む、前記方法。
【請求項２】
前記メモリの第二ユニットは、前記第一割当てスペース中の前記活動中状態データの合計サイズと少なくとも同じサイズであることを特徴とする、請求項１に記載の方法。
【請求項３】
前記メモリ・マネージャは、前記コンピュータ・システムのオペレーティング・システム中のカーネル・メモリ・マネージャである、請求項１に記載の方法。
【請求項４】
少なくとも前記ｂ）工程がガーベジ・コレクタ・ソフトウエア・ルーチンによって実施される、請求項１に記載の方法。
【請求項５】
コンピュータ・システムで実行中のソフトウエア・アプリケーションに対するメモリ管理のための装置であって
前記装置は、
前記ソフトウエア・アプリケーションに対し、第一割当てスペースとして、所定のサイズを有するメモリの第一ユニットを供給するためのメモリ・マネージャと、
前記ソフトウエア・アプリケーションが、前記第一割当てスペースにデータを格納するための格納素子と、
ａ）前記メモリ・マネージャが、前記ソフトウエア・アプリケーションに対しメモリの第二ユニットを供給するための供給素子、
ｂ）前記第一割当てスペース中の活動中状態データを識別し、前記活動中状態データを前記メモリの第二ユニットにコピーするための識別素子であって、前記活動中状態データは、少なくとも前記ソフトウエア・アプリケーションが使用中であるデータを含む、前記素子、
ｃ）前記第一割当てスペース中の前記活動中状態データが不活動状態になったことを表示する工程、
ｄ）前記第一割当てスペースを前記メモリの第二ユニットと論理的に切れ目なくマッピングし、前記ソフトウエア・アプリケーションの第二割当てスペースを設定するためのマップ素子であって、前記第二割当てスペースは、前記所定のサイズと等しいサイズを有する、前記素子、および
ｅ）前記第一割当ての残りの部分を、再使用に適したメモリ・ユニットとして前記メモリ・マネージャに返却するためのメモリ解放素子、
が行う工程を介して、前記第一割当てスペース中の不活動状態データを破棄する破棄素子と、
を含む、前記装置。
【請求項６】
前記メモリの第二ユニットは、前記第一割当てスペース中の前記活動中状態データの合計サイズと少なくとも同じサイズであることを特徴とする、請求項５に記載の装置。
【請求項７】
前記メモリ・マネージャは、前記コンピュータ・システムのオペレーティング・システム中のカーネル・メモリ・マネージャである、請求項５に記載の装置。
【請求項８】
少なくとも前記ｂ）工程がガーベジ・コレクタ・ソフトウエア・ルーチンによって実施される、請求項５に記載の装置。
【請求項９】
中央処理ユニットと、
メモリ・サブシステムと、
入力／出力サブシステムと、
前記中央処理ユニット、前記メモリ・サブシステム、前記入力／出力サブシステム、および請求項５から８のいずれかに記載の装置を相互連結するバス・サブシステムと、
を含む装置。
【請求項１０】
コンピュータ・システムにロードされ実行されるとき、前記コンピュータに、請求項１から４のいずれかに記載の方法のステップを実施させるコンピュータ・プログラム・コードを含む、コンピュータ・プログラム・エレメント。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、実行中のソフトウエア・アプリケーションのメモリ管理に関する。具体的には、本発明はガーベジ回収プロセスにおけるサバイバ（存続データ）メモリに関する。
【背景技術】
【０００２】
ランタイム環境におけるメモリ管理には、ソフトウエア・エンジニアに便宜を提供するようさまざまな工夫がなされる。この目的で、Ｊａｖａ（ＪａｖａはＳｕｎＭｉｃｒｏｓｙｓｔｅｍｓ Ｉｎｃ．の登録商標）などのランタイム環境は、ガーベジ・コレクタを備えたヒープ・メモリを含む。ガーベジ・コレクタ（不要データ回収素子）は、記憶装置を解放するため、メモリ中のオブジェクトなど不活動状態のデータを自動的に識別し破棄するためのランタイム機能である。ガーベジ回収は、ソフトウエア・エンジニアを、あらゆる不活動状態のオブジェクトをプログラム的に破棄する作業から解放するのに役立つ、最新のコンピュータ・システム性能によって提供される高度技法である。
【０００３】
最新のガーベジ回収アルゴリズムは、割当てられたほとんどのオブジェクトは「短命」であろうと（すなわち、オブジェクトは生成後比較的短期間で破棄可能になるであろうと）見なす短世代仮説を使用する。この仮説を利用するため、オブジェクトは「ナーサリ（特別管理域）」と呼ばれるメモリ・ヒープ部分に割当てられる。ナーサリは、より古い（長寿命の）オブジェクトが格納されている主ヒープよりもはるかに頻繁にガーベジ回収され、通常、割当てスペースおよびサバイバ・スペースとして知られる２つの区域から成る。オブジェクトは、切れの目ないメモリにコピーされるので、ナーサリでは自動的な圧縮がおこなわれる。ガーベジ回収コピー・アルゴリズムは、活動中オブジェクトをナーサリの割当てスペースからサバイバ・メモリにコピーし同時に圧縮する。サバイバ・メモリは、可変設定サイズの、ナーサリ・ヒープの一部である。例えば、サバイバ・メモリを、ナーサリに割当てられた合計メモリの５０％にまで構成することができる。
【０００４】
図１ａは、コンピュータ・システムで実行中のソフトウエア・アプリケーション群２０２の概略図である。ソフトウエア・アプリケーションの各々は、メモリ・マネージャ２０４に供給された関連するヒープ・メモリ２０６を有する。ヒープ・メモリ２０６は所与のアドレス範囲を占め、このアドレス範囲は物理アドレス範囲、あるいはメモリ・マネージャ２０４により物理メモリをマップされた論理アドレス範囲とすることができる。例えば、ヒープ・メモリ２０６は、より大きなアプリケーション・ヒープの一部である、ナーサリ・ヒープである。メモリ・マネージャ２０４は、コンピュータ・システムのメモリのユニットをソフトウエア、アプリケーション２０２に供給するよう動作可能になっている。例えば、メモリ・マネージャ２０４は、カーネル・メモリ・マネージャなど、コンピュータ・システム中のオペレーティング・システムのコンポーネントである。
【０００５】
ヒープ２０６の一部２０８は、ガーベジ回収プロセスの過程で使用される専用のサバイバ・メモリである。サバイバ・メモリ部分２０８は、アプリケーション２０２によるオブジェクトの割当てには利用できず、ガーベジ回収プロセス過程での使用のため留保されている、という特徴を有する。図１ｂは、図１ａのソフトウエア・アプリケーション２０２のヒープ２０６の概略図である。実行時に、ソフトウエア・アプリケーション２０２は、ヒープ２０６中にデータを格納したり読み出したりする。ヒープ２０６は、格納されたデータに対応する割当て部分（斜線の部および影付き部）を包含する。かかるデータには、例えば、割当てられたソフトウエア・オブジェクト、データ構造、記録、フィールド、又は変数を含めることができる。ガーベジ回収アルゴリズムは、定期的にヒープ２０６を処理し、ヒープ２０６中に配置された使用されていないデータ項目を破棄するよう動作可能になっている。かかるアルゴリズムは、ガーベジ回収コピー・アルゴリズムを含む。ガーベジ回収アルゴリズムは、ヒープ２０６の処理過程でヒープ２０６中の活動中状態のデータ項目を識別する。活動中状態のデータ項目とは、ソフトウエア・アプリケーション２０２が使用中のものである。これに対し、不活動状態のデータ項目とは、ソフトウエア・アプリケーション２０２がもはや必要としないものである。例えば、活動中状態データは、メモリ・ポインタまたはオブジェクト参照など、ソフトウエア・アプリケーション２０２によって参照される。ガーベジ回収アルゴリズムは、かかる識別された活動中状態のデータ項目をサバイバ・メモリ２０８にコピーする。ガーベジ回収アルゴリズムは、識別された活動中状態データ項目を、サバイバ・メモリ２０８中の連続した位置にコピーし、データ項目群を圧縮することができる。しかる後、サバイバ・メモリ２０８に記録されたデータ項目だけの保存が必要で（故に「サバイバ（存続データ）」）あり、ヒープ２０６中の他の全てのデータ項目（不活動状態のデータ項目に相等する）を破棄することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
かかるコピー・ガーベジ・コレクタに対する一つの問題は、各アプリケーションが、ガーベジ回収を実施していない時点でも、自分用のサバイバ・メモリを維持していることである。この問題は、多数の実行中のソフトウエア・アプリケーションを有し、それに応じ多数のサバイバ・メモリ割当てているシステムにおいて特に深刻である。サバイバ・メモリはガーベジ回収プロセス過程で使用するため留保されているので、ソフトウエア・アプリケーション２０２はデータの格納にこれを利用できないこともある。
【０００７】
従って、各実行中のソフトウエア・アプリケーションに対し、サバイバ・メモリとして専用ヒープ・メモリを持つ必要なくして、コピー・ガーベジ・コレクタが、ガーベジ回収に使えるサバイバ・メモリを提供すれば有益であろう。
【課題を解決するための手段】
【０００８】
本発明は、上記のため、第一の態様において、コンピュータ・システムで実行中のソフトウエア・アプリケーションに対するメモリ管理の方法を供給し、該方法は、メモリ・マネージャが、ソフトウエア・アプリケーションに対し、第一割当てスペースとして所定のサイズを有するメモリの第一ユニットを供給するステップと、ソフトウエア・アプリケーションが該第一割当てスペースにデータを格納するステップと、さらに、
ａ）メモリ・マネージャが、該ソフトウエア・アプリケーションに対するメモリの第二ユニットを供給する工程、
ｂ）第一割当てスペース中の活動中状態のデータを識別し、該活動中状態データをメモリの第二ユニットにコピーする工程であって、該活動中状態データには、少なくともソフトウエア・アプリケーションが使用中のデータが含まれる、工程、
ｃ）第一割当てスペース中の活動中状態データが不活動状態になったことを表示する工程、
ｄ）第一割当てスペースの一部を、メモリの第二ユニットと論理的に切れ目なくマップし、ソフトウエア・アプリケーションに対する第二割当てスペースを設定する工程であって、該第二割当てスペースは所定のサイズと等しいサイズを有する、工程、および
ｅ）第一割当ての残りの部分を、再使用に適したメモリ・ユニットとして、メモリ・マネージャに返却する工程、
を介して、第一割当てスペース中の不活動状態データを破棄するステップと、
を含む。
【０００９】
望ましくは、メモリの第二ユニットは、第一割当てスペース中の活動中状態データの合計サイズと少なくとも同じサイズであるよう特徴付けられる。
【００１０】
望ましくは、メモリ・マネージャは、コンピュータ・システムのオペレーティング・システム中のカーネル・メモリ・マネージャである。
【００１１】
望ましくは、上記の工程ｂ）は、ガーベジ・コレクタ・ソフトウエア・ルーチンによって実施される。
【００１２】
しかして、このような仕方で、実行中のソフトウエア・アプリケーションは、メモリの第二ユニットを、ガーベジ回収用途のためのサバイバ・メモリとして利用することができ、ガーベジ回収の完了次第、メモリはソフトウエア・アプリケーションによって解放される。かくして、ガーベジ回収プロセスの間を除きソフトウエア・アプリケーションがサバイバ・メモリを費消することはなく、実行中の各々のソフトウエア・アプリケーションに対するサバイバ・メモリとして専用のヒープ・メモリを持つ必要性が回避される。
【００１３】
本発明は、上記のため、第二の態様において、コンピュータ・システムで実行中のソフトウエア・アプリケーションに対するメモリを管理するための装置を提供し、該装置は、ソフトウエア・アプリケーションに対し、第一割当てスペースとして所定のサイズを有するメモリの第一ユニットを供給するメモリ・マネージャと、
データを第一割当てスペースに格納するための、ソフトウエア・アプリケーションに対する格納素子と、さらに
ａ）ソフトウエア・アプリケーションに対するメモリの第二ユニットを供給する、メモリ・マネージャのための供給素子、
ｂ）第一割当てスペース中の活動中状態データを識別し、該活動中状態データをメモリの第二ユニットにコピーするための識別素子であって、該活動中状態データは、少なくともソフトウエア・アプリケーションが使用中のデータを含む、識別素子、
ｃ）第一割当てスペース中の活動中状態データが不活動状態になったことを表示するための表示素子、
ｄ）第一割当てスペースの一部を、メモリの第二ユニットと論理的に切れ目なくマップし、ソフトウエア・アプリケーションに対する第二割当てスペースを設定するためのマップ素子であって、該第二割当てスペースは所定サイズと等しいサイズを有する、マップ素子、および
ｅ）第一割当ての残りの部分を、再使用に適したメモリ・ユニットとして、メモリ・マネージャに返却するためのメモリ解放素子、
が行う工程を介して、第一割当てスペース中の不活動状態データを破棄するための破棄素子と、
を含む。
【００１４】
本発明は、上記のため、第三の態様において、
中央処理ユニットと
メモリ・サブシステムと、
入力／出力サブシステムと、
上記中央処理ユニット、メモリ・サブシステム、入力／出力サブシステム、および先行段落の装置を相互連結するバス・サブシステムと、
を含む装置を提供する。
【００１５】
本発明は、上記のため、第四の態様において、コンピュータ・システムにロードされ実行されるとき、コンピュータに前述の方法のステップを実施させるコンピュータ・プログラム・コードを含む、コンピュータ・プログラム・エレメントを提供する。
【００１６】
以下に、もっぱら例示目的として、本発明の好適な実施形態を添付の図面を参照しながらさらに詳しく説明する。
【図面の簡単な説明】
【００１７】
【図１】図１ａは、従来技術における、コンピュータ・システムで実行中のソフトウエア・アプリケーションの概略図である。図１ｂは、従来技術における、図１ａのソフトウエア・アプリケーションのヒープの概略図である。
【図２】本発明の実施形態の作動に適したコンピュータ・システムのブロック図である。
【図３】図３ａは、本発明の好適な実施形態による、コンピュータ・システムで実行中のソフトウエア・アプリケーションの概略図である。図３ｂは、本発明の好適な実施形態による、ガーベジ回収プロセス過程における図３ａのヒープの概略図である。
【図４】図４ａおよび図４ｂは、本発明の好適な実施形態による、ガーベジ回収プロセス中の、図３ａのヒープの概略図である。
【図５】本発明の好適な実施形態による、メモリ管理の方法のフローチャートである。
【図６】本発明の好適な実施形態による、図５中の不活動状態データを破棄するステップのフローチャートである。
【図７】本発明の好適な実施形態による装置の構成要素の概略図である。
【発明を実施するための形態】
【００１８】
図２は、本発明の実施形態のオペレーションに適したコンピュータ・システムのブロック図である。中央処理ユニット（ＣＰＵ：ｃｅｎｔｒａｌｐｒｏｃｅｓｓｏｒ ｕｎｉｔ）１０２は、データ・バス１０８を介し、記憶装置１０４および入力／出力（Ｉ／Ｏ：ｉｎｐｕｔ／ｏｕｔｐｕｔ）インタフェース１０６に通信可能に連結されている。記憶装置１０４は、ランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄｏｍａｃｃｅｓｓ ｍｅｍｏｒｙ）または不揮発性記憶デバイスなど、任意の読取り／書込み記憶デバイスとすることができる。不揮発性記憶デバイスの例には、ディスクまたはテープ記憶デバイスが含まれる。Ｉ／Ｏインタフェース１０６は、データ入力または出力のためのデバイス、あるいはデータの入力および出力双方のためのデバイスに対するインタフェースである。Ｉ／Ｏインタフェース１０６に連結可能なＩ／Ｏデバイスの例には、キーボード、マウス、（モニタなどの）ディスプレイ、およびネットワーク接続が含まれる。
【００１９】
図３ａは、本発明の好適な実施形態による、コンピュータ・システムで実行中のソフトウエア・アプリケーション３０２の概略図である。図３ａのエレメントの多くは、図１ａに関して前述したものと同様であり、それらの繰り返し説明はしない。図１ａの配置と違って、図３ａのソフトウエア・アプリケーション３０２は、ソフトウエア・アプリケーションがデータを格納するため全面的に利用可能な、ナーサリ・ヒープなどのヒープ・メモリ３０６を含む。ヒープ３０６には、サバイバ・メモリとして留保されている部分はない。ヒープ３０６は、メモリ・マネージャ３０４によってソフトウエア・アプリケーション３０２に供給される。しかして、図３ａの配置においては、ソフトウエア・アプリケーション３０２のメモリ占有量は、アプリケーション・データの格納のためのアプリケーション・ヒープとして必要な量だけに限定される。
【００２０】
使用時に、メモリ・マネージャ３０４は、ソフトウエア・アプリケーション３０２でガーベジ回収プロセスが開始されるのに応じて、メモリの第二ユニットをソフトウエア・アプリケーション３０２に供給するよう動作可能になっている。このメモリの第二ユニットは、ガーベジ回収プロセスの間、サバイバ・メモリとして使用するのに適したようになっている。上記のガーベジ回収プロセスは、ヒープ３０６中の活動中状態データを識別し、保存のためそれをメモリの第二ユニットにコピーする。かかるコピー工程には、メモリの第二ユニット中に切れ目のないメモリ位置にコピーし、活動中状態データ群を圧縮する工程を含めることができる。ガーベジ・コレクタのコピー・プロセスが完了次第、ヒープ・メモリ３０６の部分がソフトウエア・アプリケーション３０２によって解放され、メモリ・マネージャ３０４が、それを再使用のためのメモリ・ユニットとして利用できるようになる。ヒープ・メモリ３０６の解放された部分は、メモリの第二ユニットのサイズと一致するサイズを有する。しかして、ソフトウエア・アプリケーション３０２は、ガーベジ回収プロセスのため必要なとき、メモリの第二ユニットの形でサバイバ・メモリを利用できる。さらに、ガーベジ回収プロセスが完了次第、ソフトウエア・アプリケーションによってメモリが解放される。このようにして、実行中のソフトウエア・アプリケーション３０２は、ガーベジ回収のためサバイバ・メモリを利用することができ、メモリは、ガーベジ回収が完了次第ソフトウエア・アプリケーションによって解放される。斯くのごとく、ガーベジ回収プロセスの間を除き、サバイバ・メモリがソフトウエア・アプリケーションによって費消されることなく、実行中の各々のソフトウエア・アプリケーションに対し、サバイバ・メモリとして専用のヒープ・メモリを持つ必要性が回避される。
【００２１】
図３ｂから図４ｂまでは、本発明の好適な実施形態による、ガーベジ回収プロセスの過程における図３ａのヒープ３０６の概略図である。図３ｂでは、ヒープ・メモリ３０６は、影付き部分と斜線部分とにデータを格納しているとして図示されている。ヒープ３０６に格納されたデータには、活動中状態と不活動状態のものがある。活動中状態データは、ソフトウエア・アプリケーションに参照され、連絡され、または保持されているデータなど、ソフトウエア・アプリケーション３０２が使用中のデータである。不活動状態データとは、もはや参照、連絡、または保持されないデータなど、ソフトウエア・アプリケーションがもう使用していないデータである。データは、オブジェクトまたはメモリ・ポインタの参照解除に起因し、あるいは、ヒープ中のデータの能動的または受動的な破棄によって不活動状態になり得る。図３ｂの配置において、４つの格納データが活動中状態として表され、これらは交差斜線で影付けされている。
【００２２】
図４ａは、本発明の好適な実施形態による、ガーベジ回収プロセスの最初の部分における、図３ｂのヒープ・メモリ３０６を示す。最初に、メモリ・マネージャ３０４は、サバイバ・スペース３０８としてメモリの第二ユニットを供給する。サバイバ・スペース３０８のサイズは設定可変である。望ましくは、サバイバ・スペースは、ヒープ・メモリ３０６のサイズの２０％近辺のサイズを有する。これに換えて、サバイバ・スペースは、所定サイズに固定するか、あるいは、当該ヒープのガーベジ回収のため適切なサイズに合致させる学習プロセスによって算定されたサイズにする。実際面では、サバイバ・スペース３０８のサイズは、望ましくは、ヒープ３０６中の全ての活動中状態データの合計サイズとほぼ同じかそれ以上である。ガーベジ・コレクタは、ヒープ３０６中の活動中状態データ項目を識別し、該活動中状態データ項目をサバイバ・スペース３０８にコピーする。望ましくは、ガーベジ・コレクタは、活動中状態データをサバイバ・スペース３０８中に切れ目のない配置でコピーし、活動中状態データ群を圧縮する（すなわち、コピー作業過程でメモリの断片化を防止する）。
【００２３】
図４ｂは、本発明の好適な実施形態による、ガーベジ回収プロセスの第二の部分における、図３ｂのヒープ・メモリ３０６を示す。活動中状態データがサバイバ・スペース３０８にコピーされたならば、ヒープ３０６中の活動中状態データの全てが不活動状態として表示される。このように、ヒープ３０６全体が、効率的にデータ除去（空白化）される。これは、図４ｂ中に斜線の影付きを用いて表現され、ヒープ３０６に格納された全データが不活動状態として示されている。
【００２４】
しかる後、ヒープ３０６の部分３１２が、論理的に切れ目なくサバイバ・スペース３０８とマップされ、ヒープ３０６’として新規の割当てスペースが設定される。部分３１２のマッピングは、当業者が周知のように、ヒープ３０６の当該部分３１２の記憶場所の論理アドレスを変更して、論理的に切れ目なくサバイバ・スペース３０８に後続させることによって達成できる。例えば、アドレスＵｌｏｗから始まりＵｓｉｚｅのサイズを有する、ヒープ３０６の部分３１２を、アドレスＳｌｏｗから始まりＳｓｉｚｅのサイズを有するサバイバ・スペースに、Ｕｌｏｗ＝Ｓｌｏｗ＋Ｓｓｉｚｅとして、割当て解除された部分の論理アドレスにマップすることによって、論理的に切れ目なく後続させてマップすることができる。部分３１２は、ヒープ３０６の任意の部分とすることができる（該ヒープ中の全データが、この時点では不活動状態と表示されているので、ヒープ３０６のメモリは事実上空白である）。ヒープの該部分３１２は、サバイバ・スペース３０８と組合されたとき、ヒープ３０６’として新規の割当てスペースを形成するような大きさにされ、ヒープ３０６’のサイズはヒープ３０６のサイズと同等である。しかして、Ｕｓｉｚｅ＋Ｓｓｉｚｅ＝Ａｓｉｚｅ。かくして、ヒープ３０６の残余部分は、新規ヒープ３０６’の部分を形成するためマップされなかったヒープ３０６の部分であり、サバイバ・スペース３０８のサイズと等しいサイズを有することは明らかである。
【００２５】
ヒープ３０６’によって設定された新規の割当てスペースは、引き続きソフトウエア・アプリケーション３０２がデータ保存するため使うことができる。新規ヒープ３０６’のサバイバ部分３０８と、ヒープ３０６からマップされた部分３１２との間に差別はなく、ヒープ３０６’全体が、ソフトウエア・アプリケーションのための割当てスペースとして利用可能である。
【００２６】
図５は、本発明の好適な実施形態による、メモリ管理方法のフローチャートである。最初に、ステップ４０２において、メモリ・マネージャ３０４は、ソフトウエア・アプリケーション３０２に、メモリ・ヒープ３０６として第一割当てスペースを供給する。ステップ４０４においてアプリケーションはデータをヒープ３０６に格納する。最後に、ステップ４０６において、ガーベジ回収プロセスは、ヒープ３０６中の不活動状態データを破棄する。
【００２７】
図６は、本発明の好適な実施形態による、図５の不活動状態データを破棄するステップ４０６のフローチャートである。最初に、ステップ４１０において、メモリ・マネージャ３０４は、ソフトウエア・アプリケーション３０２に対し、サバイバ・スペース３０８としてメモリの第二ユニットを供給する。ステップ４１２で、ガーベジ回収プロセスは、ヒープ３０６の割当て部分３１０中に格納されている活動中状態データを識別し、識別された活動中状態データをサバイバ・スペース３０８にコピーする。ステップ４１３において、該方法は、ヒープ３０６中の全てのデータを不活動状態として表示し、全ての活動中状態データが現在サバイバ・スペース３０８に存在するので、ヒープ３０６が今や本質的には空白である（活動中状態データがない）ことを表す。ステップ４１４において、ヒープ３０６の部分３１２はサバイバ・スペース３０８と論理的に切れ目なくマップされて、ヒープ３０６’として新規の割当てスペースが設定される。該部分３１２は、ヒープ３０６のサイズと同等なサイズを有する新規ヒープ３０６’が設定されるように選定される。
最後に、ステップ４１６において、新規ヒープ３０６’に含まれない、ヒープ３０６の残りの部分は解放され、メモリ・マネージャ３０４により再使用される。
【００２８】
図７は、本発明の好適な実施形態による装置の構成要素の概略図である。該装置は、（前述のような）メモリ・マネージャ２０４を含み、ソフトウエア・アプリケーションに対し、メモリ・ヒープとしてメモリの第一ユニット供給するのに適している。さらに、ソフトウエア・アプリケーションのメモリ・ヒープ中にデータを格納しこれによりヒープの割当て部分を画定するための、格納素子コンポーネント５０２が含まれている。加えて、ガーベジ回収コンポーネントなど、割当て部分中の不活動状態データを破棄するための破棄素子５０４が含まれている。破棄素子５０４は、ソフトウエア・アプリケーションに対しサバイバ・メモリとしてメモリの第二ユニットを供給するための供給素子コンポーネント５０６を含む。破棄素子５０４は、該ヒープ中の活動中状態データを識別し、該活動中状態データをサバイバ・メモリにコピーするための識別素子をさらに含む。破棄素子５０４は、該ヒープ中の割当て解除された部分を、サバイバ・スペースと論理的に切れ目なくマップするためのマップ素子コンポーネント５１０と、割当て解除された部分を、再使用に適したメモリ・ユニットとしてメモリ・マネージャ２０４に返却するための、メモリ解放素子コンポーネント５１２とをさらに含む。また、破棄素子５０４は、活動中状態データがサバイバ・スペース３０８にコピーされた後、ヒープ３０６中の全データが不活動状態であることを表示するための表示素子５１４も含む。
【００２９】
記載した本発明の実施形態が、マイクロプロセッサ、デジタル信号プロセッサ、あるいは、他のプロセッシング・デバイス、データ・プロセッシング装置またはシステムなど、ソフトウエア制御のプログラム可能プロセッシング・デバイスを使って、少なくとも部分的に実行が可能である範囲において、プログラム可能なデバイス、装置、またはシステムに前述した方法を実行させるよう設定するコンピュータ・プログラムは、本発明の一態様と見るものと理解される。こういったコンピュータ・プログラムは、プロセッシング・デバイス、装置、またはシステムで実行するためのソース・コードまたはコンパイルしたものとして具現することができ、あるいは、例えばオブジェクト・コードとして具現することができる。
【００３０】
このようなコンピュータ・プログラムは、適切な仕方で、マシンまたはデバイス可読の様式で、例えば、固体メモリ、ディスクまたはテープなどの磁気メモリ、コンパクト・ディスクまたはデジタル多目的ディスクなどの光学的または磁気光学的に読取り可能な記憶装置といった搬送媒体、およびプログラムまたはその一部を利用して作オペレーションのための設定するプロセッシング・デバイスに格納されよう。該コンピュータ・プログラムは、電子信号、無線周波数搬送波、または光搬送波などの通信媒体中に具現され、遠隔発信元から提供することができる。かかる搬送媒体も同様に本発明の態様と見なされる。
【００３１】
本発明は前述の例示実施形態に関連させて説明されているが、当業者は、本発明がこれらに限定されるものでなく、本発明の範囲内で、多くの可能な変形および改修ができることを理解していよう。
【００３２】
本発明の範囲には、本明細書に開示された一切の新規な特質または特使の組合せが含まれる。本出願人は、本出願内容の遂行の過程で、かかる特質または特質の組合せに対する新規の請求、あるいは、それらから導出された追加的な出願を策定が可能であることを、本明細書により告示しておく。具体的には、添付の請求項を参照し、従属請求項による特質を独立請求項のものと組合わせることができ、それぞれの独立請求項の特質を、本請求項に列挙された特定の組合せだけでなく、任意の適切な方法で組合わせることができよう。
【図１】
2011505042.tif 000003
【図２】
2011505042.tif 000004
【図３】
2011505042.tif 000005
【図４】
2011505042.tif 000006
【図５】
2011505042.tif 000007
【図６】
2011505042.tif 000008
【図７】
2011505042.tif 000009
【手続補正書】
【提出日】平成22年6月24日(2010.6.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータ・システムで実行中のソフトウエア・アプリケーションに対するメモリ管理の方法であって、
前記方法は、
メモリ・マネージャが、前記ソフトウエア・アプリケーションに対し、第一割当てスペースとして、所定のサイズを有する、メモリの第一ユニットを供給するステップと、
前記ソフトウエア・アプリケーションが、前記第一割当てスペースにデータを格納するステップと、
ａ）前記メモリ・マネージャが、前記ソフトウエア・アプリケーションに対しメモリの第二ユニットを供給する工程、
ｂ）前記第一割当てスペース中の活動中状態データを識別し、前記活動中状態データを前記メモリの第二ユニットにコピーする工程であって、前記活動中状態データは、少なくとも前記ソフトウエア・アプリケーションが使用中であるデータを含む、工程、
ｃ）前記第一割当てスペース中の前記活動中状態データが不活動状態になったことを表示する工程、
ｄ）前記第一割当てスペースを前記メモリの第二ユニットと論理的に切れ目なくマッピングし、前記ソフトウエア・アプリケーションの第二割当てスペースを設定する工程であって、前記第二割当てスペースは、前記所定のサイズと等しいサイズを有する、工程、および
ｅ）前記第一割当ての残りの部分を、再使用に適したメモリ・ユニットとして前記メモリ・マネージャに返却する工程、
を介して、前記第一割当てスペース中の不活動状態データを破棄するステップと、
を含む、前記方法。
【請求項２】
前記メモリの第二ユニットは、前記第一割当てスペース中の前記活動中状態データの合計サイズと少なくとも同じサイズであることを特徴とする、請求項１に記載の方法。
【請求項３】
前記メモリ・マネージャは、前記コンピュータ・システムのオペレーティング・システム中のカーネル・メモリ・マネージャである、請求項１に記載の方法。
【請求項４】
少なくとも前記ｂ）工程がガーベジ・コレクタ・ソフトウエア・ルーチンによって実施される、請求項１に記載の方法。
【請求項５】
コンピュータ・システムで実行中のソフトウエア・アプリケーションに対するメモリ管理のための装置であって
前記装置は、
前記ソフトウエア・アプリケーションに対し、第一割当てスペースとして、所定のサイズを有するメモリの第一ユニットを供給するためのメモリ・マネージャと、
前記ソフトウエア・アプリケーションが、前記第一割当てスペースにデータを格納するための格納素子と、
ａ）前記メモリ・マネージャが、前記ソフトウエア・アプリケーションに対しメモリの第二ユニットを供給するための供給素子、
ｂ）前記第一割当てスペース中の活動中状態データを識別し、前記活動中状態データを前記メモリの第二ユニットにコピーするための識別素子であって、前記活動中状態データは、少なくとも前記ソフトウエア・アプリケーションが使用中であるデータを含む、前記素子、
ｃ）前記第一割当てスペース中の前記活動中状態データが不活動状態になったことを表示する工程、
ｄ）前記第一割当てスペースを前記メモリの第二ユニットと論理的に切れ目なくマッピングし、前記ソフトウエア・アプリケーションの第二割当てスペースを設定するためのマップ素子であって、前記第二割当てスペースは、前記所定のサイズと等しいサイズを有する、前記素子、および
ｅ）前記第一割当ての残りの部分を、再使用に適したメモリ・ユニットとして前記メモリ・マネージャに返却するためのメモリ解放素子、
が行う工程を介して、前記第一割当てスペース中の不活動状態データを破棄する破棄素子と、
を含む、前記装置。
【請求項６】
前記メモリの第二ユニットは、前記第一割当てスペース中の前記活動中状態データの合計サイズと少なくとも同じサイズであることを特徴とする、請求項５に記載の装置。
【請求項７】
前記メモリ・マネージャは、前記コンピュータ・システムのオペレーティング・システム中のカーネル・メモリ・マネージャである、請求項５に記載の装置。
【請求項８】
少なくとも前記ｂ）工程がガーベジ・コレクタ・ソフトウエア・ルーチンによって実施される、請求項５に記載の装置。
【請求項９】
中央処理ユニットと、
メモリ・サブシステムと、
入力／出力サブシステムと、
前記中央処理ユニット、前記メモリ・サブシステム、前記入力／出力サブシステム、および請求項５から８のいずれかに記載の装置を相互連結するバス・サブシステムと、
を含む装置。
【請求項１０】
コンピュータ・システムにロードされ実行されるとき、前記コンピュータに、請求項１から４のいずれかに記載の方法の各ステップを実行させる、コンピュータ・プログラム。
【国際調査報告】
2011505042.tif 000010
2011505042.tif 000011