(57)【要約】  メモリチャンクを表わすビットマップウインドウを用いて永続メモリにおけるオブジェクトを削除するためのシステムおよび方法を提供する。一実施形態に従うと、システムは、概して、スマートカード、Ｊａｖａ（登録商標）カードおよび他のリソース制約のある環境などの永続メモリを用いるコンピューティング環境（１００）と共に用いることができる。一実施形態に従うと、システムは、プロセッサまたは計算エンジンと、ソフトウェアオブジェクトを記憶するための永続メモリと、各々が永続メモリ（１４０）においてアドレス可能な空間のチャンク（１４６，１４８，１５０）を表わしている１つ以上のメモリビットマップウインドウ（１４４）を含み得るデータ構造（１４２）とを含む。システムは、永続メモリから到達不可能なオブジェクトを削除する際に１つ以上のメモリビットマップウインドウを用いる。
2015524593.tif 000002
【特許請求の範囲】
【請求項１】
メモリチャンクを表わすビットマップウインドウを用いて永続メモリにおけるオブジェクトを削除するためのシステムであって、
プロセッサまたは計算エンジンと、ソフトウェアオブジェクトを記憶するための永続メモリとを含む、リソース制約のある環境、スマートカードまたは他の環境などのコンピューティング環境またはデバイスと、
１つ以上のメモリビットマップウインドウを含むことができるデータ構造とを含み、当該１つ以上のメモリビットマップウインドウの各々は、前記永続メモリにおけるアドレス可能な空間のチャンクを表し、
前記システムは、前記永続メモリから到達不可能なオブジェクトを削除する際に前記１つ以上のメモリビットマップウインドウを用いる、システム。
【請求項２】
前記データ構造は、
潜在的ガベージリスト；
ダイナミックルートリスト；
最大再帰深さ；および
遅延型オブジェクトリスト；
のうち１つ以上を含む、請求項１に記載のシステム。
【請求項３】
前記潜在的ガベージリストは、既に処理されたウインドウにおいて参照されていないオブジェクトを含み、
前記ダイナミックルートリストは、先行のウインドウから参照されているが先行のウインドウにおけるアドレス可能な空間にはなく、次のウインドウのルートになるオブジェクトを含み、
前記最大再帰深さは、マーキングフェイズのために再帰深さを制限する構成可能な値であり、
構成された再帰深さに到達したときに、前記遅延型オブジェクトリストは、まだ処理されていない子オブジェクトを含む、請求項２に記載のシステム。
【請求項４】
前記システムは、
オブジェクトを記憶するのに用いられる永続メモリ空間を複数のウインドウに分割するステップと、
ビットがメモリにおけるアドレスを表わしているウインドウについてビットマップを初期化するステップと、
各ウインドウのために、ルートをマークし、子を再帰的にマークするステップと、
マーキングフェイズがウインドウにおいて完了すると、このウインドウ内における未参照の如何なるオブジェクトをも潜在的ガベージリストに加えるステップと、
参照されておらずガベージと見なすことのできるオブジェクトが潜在的ガベージリストに最終的に含まれるように、前記複数のウインドウの各々を処理するステップとを含む、方法を実行する、請求項３に記載のシステム。
【請求項５】
メモリチャンクを表わすビットマップウインドウを用いて永続メモリにおけるオブジェクトを削除する方法であって、
プロセッサまたは計算エンジンと、ソフトウェアオブジェクトを記憶するための永続メモリとを含む、リソース制約のある環境、スマートカードまたは他の環境などのコンピューティング環境またはデバイスにおいて、各々が前記永続メモリにおけるアドレス可能な空間のチャンクを表わす１つ以上のメモリビットマップウインドウを含むことができるデータ構造を提供するステップと、
永続メモリから到達不可能なオブジェクトを削除する際に前記１つ以上のメモリビットマップウインドウを用いるステップとを含む、方法。
【請求項６】
潜在的ガベージリスト；
ダイナミックルートリスト；
最大再帰深さ；および
遅延型オブジェクトリスト
のうち１つ以上をデータ構造内に提供するステップをさらに含む、請求項５に記載の方法。
【請求項７】
前記潜在的ガベージリストは、既に処理されたウインドウにおいて参照されていないオブジェクトを含み、
前記ダイナミックルートリストは、先行のウインドウから参照されているが先行のウインドウにおけるアドレス可能な空間にはなく、次のウインドウのルートになるオブジェクトを含み、
前記最大再帰深さは、マーキングフェイズのために再帰深さを制限する構成可能な値であり、
構成された再帰深さに到達したときに、前記遅延型オブジェクトリストは、まだ処理されていない子オブジェクトを含む、請求項６に記載の方法。
【請求項８】
オブジェクトを記憶するのに用いられる永続メモリ空間を複数のウインドウに分割するステップと、
ビットがメモリにおけるアドレスを表わしているウインドウについてビットマップを初期化するステップと、
各ウインドウのために、ルートをマークし、子を再帰的にマークするステップと、
マーキングフェイズがウインドウにおいて完了すると、このウインドウ内における未参照の如何なるオブジェクトをも潜在的ガベージリストに加えるステップと、
参照されておらずガベージと見なすことができるオブジェクトが潜在的ガベージリストに最終的に含まれるように、前記複数のウインドウの各々を処理するステップとを含む、請求項７に記載の方法。
【請求項９】
コンピュータシステムによって実行されると請求項１から８のいずれかに記載の方法をコンピュータシステムに実行させるプログラムコード命令を含むコンピュータプログラム。
【請求項１０】
機械読取可能媒体に記憶された請求項９に記載のコンピュータプログラムを含むコンピュータプログラムプロダクト。
【請求項１１】
命令が記憶された非一時的なコンピュータ読取可能媒体であって、前記命令は、コンピューティング環境またはデバイスによって読出されて実行されると、コンピューティング環境またはデバイスに、
プロセッサまたは計算エンジンと、ソフトウェアオブジェクトを記憶するための永続メモリとを含む、リソース制約のある環境、スマートカードまたは他の環境などのコンピューティング環境またはデバイスにおいて、各々が前記永続メモリにおけるアドレス可能な空間のチャンクを表わす１つ以上のメモリビットマップウインドウを含むことができるデータ構造を提供するステップと、
永続メモリから到達不可能なオブジェクトを削除する際に前記１つ以上のメモリビットマップウインドウを用いるステップとを実行させる、非一時的なコンピュータ読取可能媒体。
【請求項１２】
潜在的ガベージリスト；
ダイナミックルートリスト；
最大再帰深さ；および
遅延型オブジェクトリスト
のうち１つ以上をデータ構造内に提供するステップをさらに含む、請求項１１に記載の非一時的なコンピュータ読取可能媒体。
【請求項１３】
前記潜在的ガベージリストは、既に処理されたウインドウにおいて参照されていないオブジェクトを含み、
前記ダイナミックルートリストは、先行のウインドウから参照されているが先行のウインドウにおけるアドレス可能な空間にはなく、次のウインドウのルートになるオブジェクトを含み、
前記最大再帰深さは、マーキングフェイズのために再帰深さを制限する構成可能な値であり、
構成された再帰深さに到達したときに、前記遅延型オブジェクトリストは、まだ処理されていない子オブジェクトを含む、請求項１２に記載の非一時的なコンピュータ読取可能媒体。
【請求項１４】
オブジェクトを記憶するのに用いられる永続メモリ空間を複数のウインドウに分割するステップと、
ビットがメモリにおけるアドレスを表わしているウインドウについてビットマップを初期化するステップと、
各ウインドウのために、ルートをマーククし、子を再帰的にマークするステップと、
マーキングフェイズがウインドウにおいて完了すると、このウインドウ内における未参照の如何なるオブジェクトをも潜在的ガベージリストに加えるステップと、
参照されておらずガベージと見なすことができるオブジェクトが潜在的ガベージリストに最終的に含まれるように、前記複数のウインドウの各々を処理するステップとを含む、請求項１３に記載の非一時的なコンピュータ読取可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
著作権表示
この特許文献の開示の一部は、著作権保護の対象となる題材を含んでいる。著作権の所有者は、特許商標庁の包袋または記録に掲載されるように特許文献または特許情報開示を誰でも複製できることに対して異議はないが、その他の点ではすべての如何なる著作権をも保有する。
【０００２】
発明の分野：
本発明の実施形態は、概して、永続的メモリストレージに関し、特に、リソース制約のある環境および他のコンピューティング環境に関し、さらに、メモリチャンクを表わすビットマップウインドウを用いて永続メモリから到達不可能なオブジェクトを削除するためのシステムおよび方法に関する。
【背景技術】
【０００３】
背景：
スマートカードまたは同様の実行環境もしくはデバイスなどの典型的なリソース制約のある環境は、ランダムアクセスメモリリソースが制限されている可能性があり、その代わりに永続メモリが、ソフトウェアオブジェクトを生成および記憶するためのデフォルト位置として用いられる可能性がある。
【０００４】
このような環境では、規定された一組のルートから到達不可能であるため、ガベージとなったオブジェクトによって使用されている永続メモリを再利用する必要がある。他の環境において有用であり得るＪａｖａ（登録商標）ＳＥなどのガベージコレクションアルゴリズムは、しばしば、オブジェクトを移動させるかまたはオブジェクトに直接マークするなどの技術に依拠している。しかしながら、これらの技術は、リソース制約のあるスマートカードまたは同様の実行環境においてはそれほど有用ではない。というのも、消耗してしまう前に永続メモリデバイスに対して限られた回数のデータ書込みしか行えないとすれば、永続メモリにおいてオブジェクトを移動させたりオブジェクトにマークしたりすることは時間のかかる動作となり、場合によってはダメージを与える動作となるからである。
【発明の概要】
【課題を解決するための手段】
【０００５】
概要：
メモリチャンクを表わすビットマップウインドウを用いて永続メモリにおけるオブジェクトを削除するためのシステムおよび方法をこの明細書中に記載する。一実施形態に従うと、システムは、概して、スマートカード、Ｊａｖａ（登録商標）カードおよび他のリソース制約のある環境などの永続メモリを用いるコンピューティング環境と共に用いることができる。一実施形態に従うと、システムは、プロセッサまたは計算エンジンと、ソフトウェアオブジェクトを記憶するための永続メモリと、１つ以上のメモリビットマップウインドウを含むことができるデータ構造とを含む。これら１つ以上のメモリビットマップウインドウの各々は、永続メモリにおけるアドレス可能な空間のチャンクを表わす。システムは、永続メモリから到達不可能なオブジェクトを削除するのに１つ以上のメモリビットマップウインドウを用いる。
【図面の簡単な説明】
【０００６】
【図１】一実施形態に従った、リソース制約のある環境またはスマートカードなどの永続メモリを用いるコンピューティング環境の例を示す図である。
【図２】一実施形態に従った、永続メモリにおけるオブジェクト削除のための、メモリチャンクを表わすビットマップウインドウの使用を示す図である。
【図３】一実施形態に従った、永続メモリにおけるオブジェクト削除のためのビットマップウインドウの使用をさらに示す図である。
【図４】一実施形態に従った、永続メモリにおけるオブジェクト削除のためのビットマップウインドウの使用をさらに示す図である。
【図５】一実施形態に従った、永続メモリにおけるオブジェクト削除のためにビットマップウインドウを用いるアルゴリズムまたは方法を示すフローチャートである。
【図６】一実施形態に従った、永続メモリにおけるオブジェクト削除のためにビットマップウインドウを用いるアルゴリズムまたは方法をさらに示すフローチャートである。
【図７】一実施形態に従った、永続メモリにおけるオブジェクト削除のためにビットマップウインドウを用いるアルゴリズムまたは方法をさらに示すフローチャートである。
【発明を実施するための形態】
【０００７】
詳細な説明：
上述のとおり、スマートカードまたは同様の実行環境もしくはデバイスなどの典型的なリソース制約のある環境は、ランダムアクセスメモリリソースが制限されている可能性があり、その代わりに永続メモリが、ソフトウェアオブジェクトを生成および記憶するためのデフォルト位置として用いられる可能性がある。このような環境では、規定された一組のルートから到達不可能であるため、ガベージとなったオブジェクトによって使用されている永続メモリを再利用する必要がある。しかしながら、他の環境において有用であり得るが、オブジェクトを移動させるかまたはオブジェクトに直接マークするなどの技術に依拠しているガベージコレクションアルゴリズムは、リソース制約のある環境、スマートカードまたは同様の実行環境においてはそれほど有用ではない。というのも、消耗してしまう前に永続メモリデバイスに対して限られた回数のデータ書込みしか行えないとすれば、永続メモリにおいてオブジェクトを移動させたりオブジェクトにマークしたりすることは時間のかかる動作となり、場合によってはダメージを与える動作となるからである。
【０００８】
これに対処するのに用いることができる方策のいくつかの典型例を挙げると、各オブジェクトをチェックして、システムにおける他のいずれかのオブジェクトから参照されているかどうかを判断するためにブルートフォース（brute force）アルゴリズムを使用すること；オブジェクトが別のオブジェクトによって参照されていないことを０の参照カウントが示すように、参照カウントを用いてオブジェクトを更新する参照カウントアルゴリズム（reference counting algorithm）を使用すること；または、メモリにおけるオブジェクトを表わすＲＡＭビットマップを使用すること；が含まれる。
【０００９】
これらの方策のうち最初の２つについての問題は、それらがさらに単純なサイクルの場合の周期的な参照にも対応していない点である。また、第１の方策では時間がかかってしまう。なぜなら、最悪のシナリオにおいては、あるオブジェクトから別のオブジェクトに対する参照を判断するために、システムにおける潜在的にすべてのオブジェクトがシステムにおいて１つおきにチェックされなければならなくなるからである。第３の方策についての問題は、システムが実際のアドレスではなくオブジェクトテーブルからのオブジェクト参照を用いるようにオブジェクトを逆参照する（dereferencing）ことに依拠している点である。しかしながら、これにより全体的な実行環境の速度が低下する。なぜなら、多くの動作がオブジェクトアドレスを必要とすることとなり、参照によりアドレスを得るために変換処理されなければならなくなるからである。
【００１０】
一実施形態に従うと、メモリチャンクを表わすビットマップウインドウを用いて永続メモリにおけるオブジェクトを削除するためのシステムおよび方法がこの明細書中に記載される。一実施形態に従うと、システムは、概して、スマートカード、Ｊａｖａ（登録商標）カードおよび他のリソース制約のある環境などの永続メモリを用いるコンピューティング環境と共に用いることができる。一実施形態に従うと、システムは、プロセッサまたは計算エンジンと、ソフトウェアオブジェクトを記憶するための永続メモリと、１つ以上のメモリビットマップウインドウを含むことができるデータ構造とを含む。これら１つ以上のメモリビットマップウインドウの各々は、永続メモリにおけるアドレス可能な空間のチャンクを表わす。システムは、永続メモリから到達不可能なオブジェクトを削除するのに１つ以上のメモリビットマップウインドウを用いる。
【００１１】
さまざまな実施形態に従うと、この明細書中に記載されるシステムおよび方法のいくつかの利点は、周期的な参照についての問題に対処する高速型のマーク・スイープ・ガベージコレクション（mark-sweep garbage collection）技術を提供できること；オブジェクトを逆参照する必要がないこと；メモリを実際に再利用するまで永続メモリに書込みを行う必要がないこと；全体的なターゲットメモリ区域の増加によってリソース要件が増加しないようにその方策がスケーラブルであること；を含む。
【００１２】
図１は、一実施形態に従った、リソース制約のある環境またはスマートカードなどの永続メモリを用いるコンピューティング環境の例を示す図である。
【００１３】
図１に図示のとおり、一実施形態に従うと、リソース制約のある環境、スマートカードまたは他の環境などのコンピューティング環境またはデバイス１００は、計算動作を実行するための回路類を含み得るプロセッサまたは計算エンジン１２６と、ランダムアクセスメモリ（ＲＡＭ：random access memory）１２０、電気的消去可能なプログラム可能読出し専用メモリ（ＥＥＰＲＯＭ：electrically erasable programmable read-only memory）１２２および／または読出し専用メモリ（ＲＯＭ：read-only memory）１２４などの１つ以上のメモリとを含む小型のコンピューティングデバイスと見なすことができる。
【００１４】
一実施形態に従うと、ＲＡＭは、揮発性ランダムアクセスメモリを含んでもよく、ＥＥＰＲＯＭは、書込み可能な不揮発性メモリを含んでもよく、ＲＯＭは、読出し専用メモリを含んでもよい。ＲＡＭは、データ項目およびデータ構造、たとえばシステムスタック１２１などを記憶するために用いることができる。ＲＯＭは、スマートカードによって実行されるＪａｖａ（登録商標）などのプラットフォーム非依存性プログラミング言語で書き込まれたアプリケーションを可能にするＪａｖａ（登録商標）仮想マシンなどの仮想マシン１０８を含んでもよく、スマートカードにアクセスするサービスをクライアントに提供する１つ以上のアプリケーション１０４、１０５を含んでもよい。一実施形態に従うと、アプリケーション１０６は、ＥＥＰＲＯＭに、またはＲＯＭおよび／もしくはＥＥＰＲＯＭに配置することもできる。
【００１５】
一実施形態に従うと、システムはカードマネージャ１０２または同様のロジックを含み得る。カードマネージャ１０２または同様のロジックは、コンピューティング環境またはデバイス上でのアプリケーションの実行を管理し（たとえば、クライアントとアプリケーションとの間の通信の許可を含む）、メモリからオブジェクトを削除するためのコードを含む。たとえば、図１に図示のとおり、デバイスの動作中、ＥＥＰＲＯＭは、アプリケーション１０４および１０５によってアクセスされる複数のオブジェクト１１２、１１３および１１４を含んでもよく（より具体的には、アプリケーション１０４がオブジェクト１１２にアクセスし、アプリケーション１０５がオブジェクト１１３および１１４にアクセスし、アプリケーション１０６がオブジェクト１１４にアクセスする）が、リンクされていなかった他のオブジェクト１１５、１１６はもはや如何なるアプリケーションによっても参照されない。一般には、メモリ空間を解放するためにこれらの参照されていないオブジェクトを削除することが望ましい。
【００１６】
図１に示される環境は、この明細書中に記載されるシステムおよび方法を利用することができる一種の環境を例示することによって規定される。さまざまな実施形態に従うと、本発明は、リソース制約のある環境またはスマートカードに限定されず、または、上述の特定の環境もしくは構成に限定されず、概して、書込み可能な永続メモリまたは不揮発性メモリにオブジェクトを記憶することのできる他の種類のコンピューティング環境、デバイスまたはシステムと共に用いることができる。
【００１７】
一実施形態に従うと、メモリのチャンクを表わすビットマップウインドウを使用するためのシステムおよび方法が提供される。その技術は、大量のアドレス可能な空間をマッピングしつつ、極めて限られたリソースで機能し得るアルゴリズムまたは方法を用いる。当該技術はまた、永続メモリ容量が増加した場合に、全体的なＲＡＭサイズが比較的変化しないままであっても、アルゴリズムまたは方法が依然として機能するように、スケーラブルである。加えて、アルゴリズムまたは方法は、ブルートフォース、参照カウントおよび逆参照技術の場合のように、全体的なシステム性能を低下させない。
【００１８】
図２は、一実施形態に従った、永続メモリにおけるオブジェクト削除のための、メモリチャンクを表わすビットマップウインドウの使用を示す図である。
【００１９】
図２に図示のとおり、一実施形態に従うと、システムはデータ構造１４２を含み得る。データ構造１４２は、オブジェクトを記憶するための永続メモリ１４０におけるアドレス可能な空間１４６、１４８、１５０のチャンクを表わす１つ以上のメモリビットマップウインドウ１４４（１５６，１５８，１６０）を含み得る。データ構造はさらに、既に処理されたウインドウにおいて参照されてないオブジェクトを列挙した潜在的ガベージリスト（potential garbage list）１６２；先行のウインドウから参照されているが先行のウインドウにおけるアドレス可能な空間にはなく、次のウインドウのためのルートになるオブジェクトを列挙したダイナミックルートリスト（dynamic roots list）１６４；フェーズ（phase）をマークするために再帰深さ（recursion depth）を制限する構成可能な値である最大再帰深さ１６６；および、構成された再帰深さに到達したときに未処理の子オブジェクトを含んでいる遅延型オブジェクトリスト１６８を含み得る。
【００２０】
図３および図４はさらに、一実施形態に従った、永続メモリにおけるオブジェクト削除のためのビットマップウインドウの使用を示す。
【００２１】
一実施形態に従うと、マーキングプロセス中にＥＥＰＲＯＭに不必要な書込みがなされるのを避けるために、システムはＲＡＭにビットマップを維持することができる。いくつかの環境においては、たとえば、典型的なリソース制約のある環境であるＲＡＭは稀少なリソースであり、典型的な量は２ｋであるかもしれず、これでは、ビットマップを記憶するための空間が少ししか提供されない。一例として、５１２バイトビットマップは４ｋビットを含み、各ビットは４バイトに相当し得るので、このサイズのビットマップを用いて１６ｋのメモリを表わすことができる。
【００２２】
一実施形態に従うと、オブジェクト削除プロセス中、システムは、メモリに到達可能なオブジェクトをすべて「マークする」マーキングプロセスを実行することができる。これは、到達可能なオブジェクトを見つけるために、アプレットテーブルおよび静的変数などの「ルート」からの一連の参照に従うことによって達成することができる。たとえば、アプレットオブジェクトは別のオブジェクトを指すことができ、この別のオブジェクトはさらに他のオブジェクトを指し、これらさらに他のオブジェクトの各々も他のオブジェクトを指す。同様に、静的変数はオブジェクトを指すことができ、これらオブジェクトはさらに他のオブジェクトを指す。
【００２３】
一実施形態に従うと、マーキングフェイズ中、ウインドウのルートオブジェクトから始まって、そのオブジェクトの子（object children）がマークされる。子オブジェクトがウインドウの外部であって次のウインドウに存在する場合、そのオブジェクトは次のウインドウのためのルートとしてダイナミックルートリストに入れることができる。子オブジェクトは、このウインドウ内にある場合マークすることができ、システムは、そのオブジェクトの子を再帰的に処理することができる。子オブジェクトが先行のウインドウにある場合、システムは、潜在的ガベージリストをチェックし、そのオブジェクトを再帰的に処理し、次いで、そのオブジェクトを、このウインドウからアドレス可能であるので潜在的ガベージリストから削除する。ウインドウに対するマーキングフェイズ後、システムは、マークされなかったオブジェクトを探し、潜在的ガベージリストに入れる。これらのオブジェクトは、次のウインドウからアドレス可能であるかもしれないので、実際にはまだガベージとは見なされない可能性がある。次いで、システムは次のウインドウを処理する。最終的に、ウインドウの完成後、潜在的ガベージリストは、参照されておらずガベージと見なされ得るそれらのオブジェクトを含むこととなる。
【００２４】
図３に図示のとおり、一実施形態に従って、メモリ空間が複数のウインドウに分割される。ビットがメモリにおけるアドレスを表わしているウインドウについてビットマップが初期化される。たとえば、メモリ管理が４バイトアライメントで実行される場合、ビットは、４バイトのメモリセルにおける最初のバイトを表わし得る。次いで、ビットマップウインドウが処理される。各々のウインドウのためにルートオブジェクトがマークされる。この場合、アプレットテーブル１６９によって示されるようにカレントウインドウ内でアプレットオブジェクト１７０をマークすること；ウインドウにあってスタティックフィールド１７６から参照されるオブジェクト１７４をマークすること；および、ダイナミックルートテーブルからウインドウにあるオブジェクト１７８をマークすることを含む。
【００２５】
一実施形態に従うと、次に、子オブジェクトがマークされる。ここでは、子オブジェクト１７１および１７２がカレントウインドウ内で発見される場合、ビットマップにおける対応するビットをマークする（１８４）ことによってそのオブジェクトをマークすることを含む。子オブジェクト１８０が潜在的ガベージリストにおいてカレントウインドウの外部で発見される場合、オブジェクトおよびその子は、カレントウインドウおよび潜在的ガベージリストにおいて再帰的にマークされる。子オブジェクトがカレントウインドウの外部で発見され、潜在的ガベージリストにない場合、オブジェクトがメモリのうちの処理済み区域にあれば、そのオブジェクトは、到達可能なものとして既にマークされているため、無視することができる。そうではなく、子オブジェクトがメモリのうちまだ処理される必要のある区域にある場合、その子オブジェクトはダイナミックルートリストに入れられる。
【００２６】
一実施形態に従うと、子オブジェクトをマークしている間、最大再帰深さに到達した場合、階層における次のオブジェクトが遅延型オブジェクトリストに加えられ、現在の階層の処理終了時に処理されることとなる。遅延型オブジェクトリストが一杯であり、最大再帰深さに到達した場合、ビットマップをリセットすることなく、カレントウインドウにおいてマーキングプロセスが再開されるので、２番目のサイクルおよび後続のサイクルにおけるルートの数が増加する。マーキングフェイズがウインドウにおいて完了すると、ウインドウ内における未参照のオブジェクトはいずれも潜在的ガベージリストに加えられる。
【００２７】
図４に図示のとおり、次のウインドウと、そのルートおよび子オブジェクト１８５、１８６、１８７、１８８とについてプロセスが続行される。ウインドウがすべて処理されると、潜在的ガベージリストは、参照されていないためガベージとされるオブジェクト１８９のみを含むこととなる。一実施形態に従うと、これらのオブジェクトは用いられるメモリを再利用するために削除することができる。
【００２８】
図５は、一実施形態に従った、永続メモリにおけるオブジェクト削除のためにビットマップウインドウを用いるアルゴリズムまたは方法１９０を示すフローチャートである。
【００２９】
図５に図示のとおり、ステップ１９２において、メモリ空間が複数のウインドウに分割される。
【００３０】
ステップ１９４において、ビットがメモリにおけるアドレスを表わしているウインドウについてビットマップが初期化される。
【００３１】
ステップ１９６、１９８および２０２において、ビットマップウインドウが処理される。一実施形態に従うと、各ウインドウのために、ルートオブジェクトがマークされる。この場合、カレントウインドウ内におけるアプレットオブジェクトをマークすること、ウインドウにあってスタティックフィールドから参照されるオブジェクトをマークすること、および、ダイナミックルートテーブルからウインドウにあるオブジェクトをマークすることが含まれる。次いで、子オブジェクトが、以下にさらに詳細に記載される基準に従ってマークされ、ビットマップが更新される。カレントウインドウにおける未参照の如何なるオブジェクトも潜在的ガベージリストに加えられる。
【００３２】
ステップ２０４において、ウインドウがすべて処理されると、潜在的ガベージリストは、参照されていないためガベージとされるオブジェクトのみを含むこととなる。一実施形態に従うと、これらのオブジェクトは用いられるメモリを再利用するために削除することができる。
【００３３】
図６は、一実施形態に従った、永続メモリにおけるオブジェクト削除のためにビットマップウインドウを用いるアルゴリズムまたは方法２１０をさらに示すフローチャートである。特に、図６は、一実施形態に従って、ルートおよび子オブジェクトのマークが如何に実行され得るかをさらに示す。
【００３４】
図６に図示のとおり、ステップ２１２において、各ウインドウのために、ルートオブジェクトがマークされる。この場合、カレントウインドウ内におけるアプレットオブジェクトをマークすること、ウインドウにあってスタティックフィールドから参照されるオブジェクトをマークすること、ダイナミックルートテーブルからウインドウにあるオブジェクトをマークすることを含む。
【００３５】
ステップ２１４において、子オブジェクトがマークされる。この場合、子オブジェクトがカレントウインドウ内で発見される場合、ビットマップにおける対応するビットをマークすることによってそのオブジェクトをマークすることを含む。子オブジェクトが潜在的ガベージリストにおいてカレントウインドウの外部で発見される場合、オブジェクトおよびその子は、カレントウインドウおよび潜在的ガベージリストにおいて再帰的にマークされる。子オブジェクトがカレントウインドウの外部で発見され、潜在的ガベージリストにない場合、オブジェクトがメモリのうち既に処理済みの区域にあれば、このオブジェクトは到達可能なものとして既にマークされており、このため、無視することができる。代わりに、子オブジェクトがメモリのうちまだ処理される必要のある区域にある場合、その子オブジェクトはダイナミックルートリストに入れられる。
【００３６】
ステップ２１６において、子オブジェクトをマークしている間、最大再帰深さに到達した場合、階層における次のオブジェクトが遅延型オブジェクトリストに加えられ、現在の階層の処理終了時に処理されることとなる。
【００３７】
ステップ２２０において、遅延型オブジェクトリストが一杯であり、最大再帰深さに到達した場合、ビットマップをリセットすることなく、マーキングプロセスがカレントウインドウにおいて再開され、これにより、２番目のサイクルおよび後続のサイクルにおけるルートの数が増加する。
【００３８】
ステップ２２２において、マーキングフェイズがウインドウにおいて完了すると、ウインドウ内における未参照の如何なるオブジェクトも潜在的ガベージリストに加えられる。上述のとおり、ウインドウがすべて処理されると、潜在的ガベージリストは、参照されていないためガベージとされるオブジェクトのみを含むこととなる。一実施形態に従うと、これらのオブジェクトは、用いられるメモリを再利用するために削除することができる。
【００３９】
図７は、一実施形態に従った、永続メモリにおけるオブジェクト削除のためにビットマップウインドウを用いるアルゴリズムまたは方法２３０をさらに示すフローチャートである。特に、図７は、一実施形態に従った、図５および図６において先に記載されたステップの各々の組合せを示す。
【００４０】
概して、本発明は、１つ以上のマイクロプロセッサ上で動作し、メモリチャンクを表わすビットマップウインドウを用いて永続メモリにおけるオブジェクトを削除するためのシステムに関する。当該システムは、
プロセッサまたは計算エンジンと、ソフトウェアオブジェクトを記憶するための永続メモリとを含む、リソース制約のある環境、スマートカードまたは他の環境などのコンピューティング環境またはデバイスにおいて、各々が永続メモリにおけるアドレス可能な空間のチャンクを表わしている１つ以上のメモリビットマップウインドウを含むことができるデータ構造を提供するための手段と、
永続メモリから到達不可能なオブジェクトを削除する際に１つ以上のメモリビットマップウインドウを用いるための手段とを含む。
【００４１】
上記システムは、データ構造内において、
潜在的ガベージリスト；
ダイナミックルートリスト；
最大再帰深さ；および
遅延型オブジェクトリスト；のうち１つ以上を提供するための手段をさらに含む。
【００４２】
上記システムはさらに、
潜在的ガベージリストが、既に処理されたウインドウにおいて参照されていないオブジェクトを含むこと；
ダイナミックルートリストが、先行のウインドウから参照されているが、先行のウインドウにおけるアドレス可能な空間にはなく、次のウインドウのルートになるオブジェクトを含むこと；
最大再帰深さが、マーキングフェイズのために再帰深さを制限する構成可能な値であること；および、
構成された再帰深さに到達したときに、遅延型オブジェクトリストは、まだ処理されていない子オブジェクトを含むこと；を含む。
【００４３】
上記システムはさらに、
オブジェクトを記憶するのに用いられる永続メモリ空間を複数のウインドウに分割するための手段と；
ビットがメモリにおけるアドレスを表わしているウインドウについてビットマップを初期化するための手段と；
各ウインドウのために、ルートをマークし、子を再帰的にマークすることと；
マーキングフェイズがウインドウにおいて完了した場合、このウインドウ内における未参照の如何なるオブジェクトも潜在的ガベージリストに加えるための手段と；
参照されておらずガベージと見なすことができるオブジェクトが潜在的ガベージリストに最終的に含まれるように、ウインドウの各々を処理するための手段と；を含む。
【００４４】
本発明は、本開示の教示に従ってプログラムされた１つ以上のプロセッサ、メモリおよび／またはコンピュータ読取り可能な記憶媒体を含む、１つ以上の従来の汎用のまたは特化されたデジタルコンピュータ、コンピューティングデバイス、機械またはマイクロプロセッサを用いて好都合に実現され得る。ソフトウェア技術の当業者にとって明らかになるように、熟練したプログラマであれば、本開示の教示に基づいて適切なソフトウェアコーディングを容易に作成することができる。
【００４５】
いくつかの実施形態においては、本発明は、命令が記憶されている／本発明のプロセスのうちのいずれかを実行するようにコンピュータをプログラムするのに用いることができる非一時的な記憶媒体またはコンピュータ読取可能媒体であるコンピュータプログラムプロダクトを含む。記憶媒体は、フロッピー（登録商標）ディスク、光ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、マイクロドライブ、および磁気光ディスクを含む如何なるタイプのディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＤＲＡＭ、ＶＲＡＭ、フラッシュメモリ素子、磁気もしくは光カード、（分子メモリＩＣを含む）ナノシステム、または命令および／もしくはデータを記憶するのに適した如何なるタイプの媒体もしくは装置をも含み得るが、これらに限定されない。
【００４６】
本発明の上述の記載は例示および説明のために提供されたものであり、網羅的なものとして意図されたものではなく、または、開示された厳密な形態に本発明を限定するよう意図されたものではない。多くの変更例および変形例が当業者に明らかになるだろう。本発明およびその実用化の原理を最も良く説明することにより、企図される特定の用途に適したさまざまな実施形態について、さまざまな変更例と共に、当業者が本発明を理解することを可能にするために、実施形態が選択され、記載されている。本発明の範囲が添付の特許請求の範囲およびその同等例によって規定されることが意図される。
【図１】
2015524593.tif 000003
【図２】
2015524593.tif 000004
【図３】
2015524593.tif 000005
【図４】
2015524593.tif 000006
【図５】
2015524593.tif 000007
【図６】
2015524593.tif 000008
【図７】
2015524593.tif 000009
【国際調査報告】
2015524593.tif 000010
2015524593.tif 000011
2015524593.tif 000012