(57)【要約】  保守的ガベージコレクションに関する側面が開示される。一側面において、スクリプトの実行中にオブジェクトのヒープが生成され、そして、未実行部分のスクリプトオブジェクトが、ヒープ上の対応するメモリー位置まで追跡される。ヒープは、次いで、前記スクリプトを実行するのと同時にマークされ、その結果、マークされたヒープが到達可能オブジェクトと到達不能オブジェクトを含むようになる。前記到達不能オブジェクトに割り当てられたメモリーが、次いで、前記マークに基づいて前記スクリプトの実行と同時に解放される。別の側面において、コールスタックに関連付けられたオブジェクトグラフが生成及び追跡され、その結果、前記スタックの未実行部分に含まれるスクリプトオブジェクトがヒープ上の対応するメモリー位置まで追跡される。ヒープオブジェクトは前記スタックの実行と同時にマークされ、マークされたヒープが到達可能オブジェクトと到達不能オブジェクトを含むようになる。前記到達不能オブジェクトに割り当てられたメモリーが、次いで、前記マークされたヒープに基づいて前記スタックの実行と同時にクリアされる。【選択図】図１
2014513342.tif 000002
【特許請求の範囲】
【請求項１】
スクリプトの実行中にオブジェクトのヒープを生成するステップと、
前記スクリプトの未実行部分に含まれているスクリプトオブジェクトを前記ヒープ上の対応する１組のメモリー位置まで追跡するステップと、
前記スクリプトの実行と同時に前記ヒープの少なくとも一部分をマークするステップであって、マークされたヒープは、前記スクリプトの未実行部分によって到達可能である到達可能オブジェクトと、更に、前記スクリプトの未実行部分によって到達不能である到達不能オブジェクトとを含む、ステップと、
前記到達不能オブジェクトに割り当てられたメモリーを、前記マークに基づいて前記スクリプトの実行と同時に解放するステップと、
を含む方法。
【請求項２】
前記マークするステップは、前記到達可能オブジェクトをマークするステップを含む、請求項１に記載の方法。
【請求項３】
前記マークするステップは、前記到達不能オブジェクトをマークするステップを含む、請求項１に記載の方法。
【請求項４】
前記解放するステップは、前記到達可能オブジェクトを前記ヒープの最初の記憶位置にそれぞれ保持するステップを含む、請求項１に記載の方法。
【請求項５】
前記保持するステップは、前記ヒープ内の固定された１組の境界線に従ってヒープオブジェクトの区切りを維持するステップを含む、請求項４に記載の方法。
【請求項６】
前記スクリプトを実行するステップを更に含む、請求項１に記載の方法。
【請求項７】
前記実行するステップは、ジャバスクリプトをコンパイルするステップを含む、請求項６に記載の方法。
【請求項８】
前記実行するステップは、文書オブジェクトモデルを変更するステップを含む、請求項６に記載の方法。
【請求項９】
コンピューター実行可能コンポーネントが格納されたメモリーと、
前記メモリーに通信可能に結合され、前記コンピューター実行可能コンポーネントを実行するように構成されたプロセッサーと、を備え、
前記コンピューター実行可能コンポーネントは、
スクリプトの実行中にオブジェクトのヒープを生成するように構成されたヒープコンポーネントと、
前記スクリプトの未実行部分に含まれているスクリプトオブジェクトを前記ヒープ上の対応する１組のメモリー位置まで追跡するように構成された追跡コンポーネントと、
前記スクリプトの実行と同時に前記ヒープの少なくとも一部分をマークするように構成されたマークコンポーネントであって、マークされたヒープは、前記スクリプトの未実行部分によって到達可能である到達可能オブジェクトと、更に、前記スクリプトの未実行部分によって到達不能である到達不能オブジェクトとを含む、マークコンポーネントと、
前記マークされたヒープに従って、前記スクリプトの実行と同時に、前記到達不能オブジェクトに割り当てられたメモリーを解放するように構成された再利用コンポーネントと、を備える、
メモリー管理デバイス。
【請求項１０】
前記マークコンポーネントは、前記到達可能オブジェクト又は前記到達不能オブジェクトのうちの１つだけをマークするように構成される、請求項９に記載のメモリー管理デバイス。
【請求項１１】
前記再利用コンポーネントは、前記到達不能オブジェクトに割り当てられていた前記メモリーの全体部分の解放に先立って、前記到達不能オブジェクトに割り当てられていた前記メモリーの一部分を再利用するように構成される、請求項９に記載のメモリー管理デバイス。
【請求項１２】
前記再利用コンポーネントは、到達可能オブジェクトをヒープの最初の記憶位置にそれぞれ保持するように構成される、請求項９に記載のメモリー管理デバイス。
【請求項１３】
前記再利用コンポーネントは、前記ヒープ内の固定された１組の境界線に従ってヒープオブジェクトの区切りを維持するように構成される、請求項１２に記載のメモリー管理デバイス。
【請求項１４】
前記スクリプトを実行するように構成された実行コンポーネントを更に備える、請求項９に記載のメモリー管理デバイス。
【請求項１５】
前記スクリプトの実行に基づいて文書オブジェクトモデルを変更するように構成されたコンポーネントを更に備える、請求項１４に記載のメモリー管理デバイス。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  いくつかの従来のシステムに関する背景として、コンピューティングデバイスは、伝統的に情報や関連アプリケーションを格納してきたということが留意される。これらの目的及び関連する目的のため、効率的なメモリー管理方式の実装は最適なコンピューティング性能を達成するのに役立つことが可能である、ということが更に留意される。自動的なメモリー管理方式の発展は、マニュアルのメモリー管理方式よりも良好な性能を発揮してきた。例えば、ガベージコレクターアルゴリズムは、自動的なメモリー管理方式であり、特定のプログラムによって最早使われていないオブジェクトが占有していたメモリーを再利用することを試みる。
【０００２】
[0002]  トレーシングガベージコレクターは、一般的な種類のガベージコレクターである。トレーシングガベージコレクターは、まず、どのオブジェクトが到達可能（又は潜在的に到達可能）であるかを判定し、次に、残りの全てのオブジェクトを破棄する。到達可能オブジェクトは、他の到達可能オブジェクトから直接的にであっても参照を通じてであってもその到達可能オブジェクトへと至るプログラム環境の中にいくつかの変数が存在しているオブジェクトとして、規定されることができる。より正確には、オブジェクトは一般に２つの方法で到達可能である。第１に、ルートとして知られる識別されたオブジェクトのセットが到達可能であると想定される。これらは典型的に、コールスタック（即ち、現在呼び出し中の関数内の全ローカル変数及びパラメーター）の任意の場所から、また任意のグローバル変数から参照される、あらゆるオブジェクトを含む。第２に、到達可能オブジェクトから参照される任意のものがそれ自体、到達可能であると考えられる。しかしながら、従来のガベージコレクターによる問題は、ガベージコレクターが、最早到達可能でなくなったオブジェクトに割り当てられたメモリーを素早く且つ効率的に解放する必要があるということである。
【０００３】
[0003]  今日のメモリー管理方式についての上述された欠点は、単に従来のシステムの問題点のいくつかに関する概観を提供することを意図されているのであって、網羅的であることを意図されていない。現状技術による他の問題点、及び様々な非限定的な実施態様のいくつかについての対応する利点は、以下の詳細な説明を検討することで更に明らかとなるだろう。
【発明の概要】
【０００４】
[0004]  詳細な説明及び添付図面において以下に述べられる例示的で非限定的な実施態様の様々な側面に関する基本的なあるいは概括的な理解を可能にするのに役立つよう、簡略化された概要がここに提供される。しかしながら、この概要は、広範なあるいは網羅的な概観としては意図されていない。むしろ、この概要の唯一の目的は、いくつかの例示的で非限定的な実施態様に関するいくつかの概念を、以下に述べる様々な実施態様のより詳細な説明への前奏として簡略化された形で提示することである。
【０００５】
[0005]  １又は複数の実施態様及び対応する開示に従って、メモリー管理のための保守的ガベージコレクションに関連して様々な非限定的な側面が説明される。そのような１つの側面において、保守的ガベージコレクションのアルゴリズムの範囲内でオブジェクトを同時にマーク及びスイープするための方法が提供される。この方法は、スクリプトの実行中にオブジェクトのヒープを生成するステップと、前記スクリプトの未実行部分に含まれているスクリプトオブジェクトをヒープ上の対応する１組のメモリー位置まで追跡するステップとを含むことが可能である。この実施態様は、更に、前記スクリプトの実行と同時に前記ヒープの少なくとも一部分をマークして、マークされたヒープが到達可能オブジェクト及び到達不能オブジェクトを含むようにするステップを含むことが可能である。この特定の実施態様に関して、到達可能オブジェクトは前記スクリプトの未実行部分によって到達可能であるのに対して、到達不能オブジェクトは前記スクリプトの未実行部分によって到達不能である。この方法は、その上更に、前記到達不能オブジェクトに割り当てられたメモリーを、前記マークに基づいて前記スクリプトの実行と同時に解放するステップを含むことが可能である。
【０００６】
[0006]  別の側面において、オブジェクトを同時にマーク及びスイープするように構成されたメモリー管理デバイスが開示される。そのような実施態様の範囲内において、このメモリー管理デバイスは、メモリーに格納されたコンピューター実行可能コンポーネントを実行するように構成されたプロセッサーを含む。このコンピューター実行可能コンポーネントは、ヒープコンポーネント、追跡コンポーネント、マークコンポーネント、及び再利用コンポーネントを含む。ヒープコンポーネントは、スクリプトの実行中にオブジェクトのヒープを生成するように構成されるのに対し、追跡コンポーネントは、前記スクリプトの未実行部分に含まれているスクリプトオブジェクトをヒープ上の対応する１組のメモリー位置まで追跡するように構成される。その上、マークコンポーネントは、前記スクリプトの実行と同時に前記ヒープの少なくとも一部分をマークするように構成される。この実施態様に関して、マークされたヒープは、前記スクリプトの未実行部分によって到達可能である到達可能オブジェクトと共に、前記スクリプトの未実行部分によって到達不能である到達不能オブジェクトを含む。その上、再利用コンポーネントは、前記スクリプトの実行と同時に、また前記マークされたヒープに従って、前記到達不能オブジェクトに割り当てられたメモリーを解放するように構成される。
【０００７】
[0007]  更に別の側面において、保守的ガベージコレクションのアルゴリズムの範囲内でオブジェクトを同時にマーク及びスイープするためのコンピューター読み取り可能記憶媒体が開示される。そのような実施態様の範囲内において、コンピューター読み取り可能記憶媒体は、少なくとも１つのプロセッサーに様々な動作を実施させるためのコンピューター読み取り可能命令を含む。例えば、そのような動作は、コールスタックに関連付けられたオブジェクトグラフを生成するステップと、前記オブジェクトグラフを追跡して、前記コールスタックの未実行部分に含まれているスクリプトオブジェクトがヒープ上の対応する１組のメモリー位置まで追跡されるようにするステップとを含む。この実施態様は、更に、前記コールスタックの実行と同時にヒープオブジェクトをマークするステップを含む。この特定の実施態様に関して、マークされたヒープは、前記コールスタックの未実行部分によって到達可能である到達可能オブジェクトと共に、前記コールスタックの未実行部分によって到達不能である到達不能オブジェクトを含む。その上、前記到達不能オブジェクトに割り当てられたメモリーは、前記マークされたヒープに基づいて前記コールスタックの実行と同時にクリアされる。
【０００８】
[0008]  他の実施態様、並びに様々な非限定的な例、シナリオ、及び具体例が、以下においてより詳細に説明される。
【０００９】
[0009]  添付図面を参照して、様々な非限定的な実施態様が更に説明される。
【図面の簡単な説明】
【００１０】
【図１】[0010]  図１は、一実施態様による保守的ガベージコレクションのアルゴリズムの実装を容易化する例示的なシステムを示す。
【図２】[0011]  図２は、一実施態様による例示的なオブジェクトのヒープを示す図である。
【図３】[0012]  図３は、一実施態様による例示的なオブジェクトグラフを示す図である。
【図４】[0013]  図４は、一実施態様による例示的なメモリーの解放を示す図である。
【図５】[0014]  図５は、一実施態様による例示的なメモリー管理デバイスを示すブロック図である。
【図６】[0015]  図６は、一実施態様による保守的ガベージコレクションのアルゴリズムを実装するための例示的で非限定的な実施態様を示すフロー図である。
【図７】[0016]  図７は、一実施態様による例示的なリソース管理ユニットを示すブロック図である。
【図８】[0017]  図８は、一実施態様による同時にオブジェクトをマーク及びスイープするための例示的で非限定的な実施態様を示すフロー図である。
【図９】[0018]  図９は、本明細書において説明される様々な実施態様が実現可能な例示的で非限定的なネットワーク環境を表すブロック図である。
【図１０】[0019]  図１０は、本明細書において説明される様々な実施態様の１又は複数の側面が実現可能な例示的で非限定的なコンピューティングシステム又は動作環境を表すブロック図である。
【発明を実施するための形態】
【００１１】
＜概観＞
[0020]  背景において示されたように、ヒープ上の到達可能オブジェクトと到達不能オブジェクトとを識別する保守的ガベージコレクターのアルゴリズムを実装することが望ましいと言えるであろう。様々な実施態様において、ネイティブコードの互換性に基づいてメモリー管理が再設計される。一側面において、スクリプトオブジェクトは、あまり管理されていないオブジェクトであって、オブジェクトの間の参照カウントが削除されるようなメモリーの単なるネイティブな断片以上のものである。その上、保守的ガベージコレクションのアルゴリズムは実現されているが、ポインターである全てのものが知られているということは想定されていない。例えば共通言語ランタイム（ＣＬＲ）のガベージコレクターでは、スタックは厳密に型指定される。しかしながら、ネイティブコード、例えばＣのコード、及びスクリプトコードでは、ユーザーは何がスタック上にあるかを知ることはない。この点において、参照カウントモデルを利用することに代えて、オブジェクトが直接的に相互作用されることが企図される。
【００１２】
[0021]  本明細書において開示される様々な実施態様は、保守的ガベージコレクションのアルゴリズムの範囲内でオブジェクトを同時にマーク及びスイープすることに向けられている。その上、本明細書において開示される側面は、文書オブジェクトモデルと比較してスクリプト（例えばジャバスクリプト）の効率的な実行を容易化するようにオブジェクトを同時にマーク及びスイープすることに向けられている。例示的な実施態様において、同時マークは、到達可能な全てのオブジェクトが「１」を割り当てられている一方で到達可能でない全てのオブジェクトが「０」を割り当てられているヒープ上における、オブジェクトのトラバーサルを含む。ひとたび同時マークが完了すると、同時スイーパーが当該ヒープをスキャンして、到達不能オブジェクト（即ち、「０」でマークされたもの）を「空きメモリー」リスト上に配置する。
【００１３】
[0022]  同時スイーパーを実装することの利点は、スクリプトのスレッドの実行時にメモリーがアロケーターに戻されて再利用されるため、より少ないメモリーが使用されるということである。ここで、いくつかのデータ構造が、同時マーク及びスイープを達成することに伴って生じるということが留意されるべきである。例えば、いくつかのデータ構造は、マークされたビットとは別の未使用のビットを保持する。更に、別々のヒープブロックのページが保持されて、ページ全体が未使用と認識され得るようにすることが可能である。よって、そのようなページを再利用するのに必要とされるリソースは、ヒープブロックが不適当に多くのページに割り当てられ結果として再利用のためにより多くのリソースを必要とする従前の手法に比べて、最小化される。その上、開示された側面を実装することによって、全ページが簡単なチェックで素早く未使用と認識されることが可能である。
【００１４】
[0023]  別の側面において、従来のスイーパーがどのように、スイープ済みメモリーの何れかがワークを実行中のスレッドに再使用される前に全体のスイープが行われることを必要とするのかとは対照的に、スイープ処理と一緒にロックフリーキューが作成される。そのような実施態様の範囲内において、ロックフリーキューは、スイープ中にメモリーの断片をワーキングスレッド（即ち、ウェブページを実行中のスレッド）に返すことができるようにするデータ構造とすることが可能であり、これにより、ワーキングセットの一部分として使用されるメモリーの量が著しく削減される。このようにより一層増加する再利用メカニズムが開示され、そのような再利用は望ましくはより細かい粒度で実施される。
【００１５】
＜保守的ガベージコレクションの同時マーク及びスイープ＞
[0024]  ごくわずかのインタラクティビティを有した情報の単調な提示からクライアント側における豊富なインタラクティビティを有したよりリッチなアプリケーション又はアプレットの体験へとウェブブラウズ体験が進化し始めるにつれて、いくつかの問題がわき上がってきた。より一般的には、ウェブブラウズ体験は、複合的な情報の表示、及び表示されたオブジェクトとのよりリッチなインタラクティビティへ進化してきた。この進化に伴う際立った挑戦は、本来はクライアント上のネイティブコードに基づく情報の単調な提示のために主として設計された旧来の文書オブジェクトモデル（ＤＯＭ）を、ジャバスクリプトオブジェクト等のスクリプトコードを流れるように処理する体験に適応させることに基づいている。
【００１６】
[0025]  スピードの向上は、滑らかなユーザー体験を容易化するのに役立つ。例えば、以前のポップアップメニューに関して、ウェブ体験は、サーバーとの通信に基づく遅延でフリッカーを生じていた。しかしながら、スクリプトによって、小さいプログラムがサーバーに戻ることなしにオンザフライでＤＯＭを変更することが可能になる。ユーザーはサーバーに戻ることなしにオンザフライでより多くのことをしたいと考えるため、スクリプトコードを高速に実行させることは挑戦的なこととなってきた。
【００１７】
[0026]  ユーザー体験はＤＯＭのスクリプトを効果的に実行することによって大きく影響を受けるので、インタラクティブな応答を最大化するようにできるだけ高速にＤＯＭを変化させることが望ましい。スクリプト実行エンジンとＤＯＭのネイティブクラスとの間の通信は、以前には、任意のオブジェクトをスクリプト可能にする、例えばｉＤｉｓｐａｔｃｈやｉＡｃｔｉｖｅＳｃｒｉｐｔ等の１組のインターフェースを含むオブジェクトのリンクと埋め込み（ＯＬＥ）オートメーションの使用が原因で、貧弱であった。しかしながら、そのような方法は低速であり、それ故に改善が望まれている。したがって、本明細書に開示される側面は、保守的ガベージコレクションのアルゴリズムの範囲内でオブジェクトを同時にマーク及びスイープすることによってスクリプトの実行スピードを向上させることに向けられている。
【００１８】
[0027]  図１は、一実施態様に従って保守的ガベージコレクションのアルゴリズムの実装を容易化する例示的なシステムを示している。図示されるように、システム１００は、メモリー１２０に通信可能に接続されたメモリー管理ユニット１１０を含むことが可能である。一側面において、メモリー管理ユニット１１０は、メモリー１２０のメモリー空間を管理するための保守的ガベージコレクションのアルゴリズムを実装するように構成される。その上、メモリー管理ユニット１１０は、スクリプト１１２の実行に関連するマークされたオブジェクトグラフ１１４を生成するように構成される。例えば、スクリプト１１２は、ＤＯＭに対して実行されるジャバスクリプトである場合があり、ここで、ジャバスクリプトは、メモリー１２０におけるメモリー空間の割り当てを必要とする様々なオブジェクトを含む。ある特定の実施態様において、「到達可能」であるオブジェクトと「到達不能」であるオブジェクトの識別を容易化するために、マークされたオブジェクトグラフ１１４に含まれるスクリプトオブジェクトは、それらがスクリプト１１２の未実行部分によって到達可能であるか否かに従ってマークされる。
【００１９】
[0028]  一側面において、スクリプトオブジェクトに割り当てられたメモリーは、そのようなオブジェクトをヒープ上に格納することを含む。次に図２を参照すると、一実施態様による例示的なオブジェクトのヒープのブロック図が提供されている。図示されるように、ヒープ２００は、様々なオブジェクト２２０、２３０、２４０、２５０、２６０、及び２７０に対応する割り当て済みメモリーと共に、使用可能メモリー２１０を含むことが可能である。この特定の例に関して、オブジェクト２４０及び２７０はポインター値に対応するのに対し、オブジェクト２２０、２３０、２５０、及び２６０は整数値に対応する。即ち、オブジェクト２４０はオブジェクト２３０によって表される整数値を参照するポインター値であるのに対し、オブジェクト２７０はオブジェクト２６０によって表される整数値を参照するポインター値である。
【００２０】
[0029]  到達可能オブジェクトが到達不能オブジェクトから容易に識別できるように、ヒープオブジェクトがマークされることが可能である、ということが企図される。次に図３を参照すると、ヒープ上の到達可能／到達不能オブジェクトのマッピングを容易化する例示的なオブジェクトグラフを示す図が提供されている。図示されるように、オブジェクトグラフ３００は、未実行コールスタック部分３１０に含まれるオブジェクトをマークされたヒープ３２０にマッピングする。この目的のために、マークされたヒープ３２０と使用可能メモリー３３０は、概してヒープ２００と使用可能メモリー２１０にそれぞれ類似するものであることが留意される。
【００２１】
[0030]  一側面において、オブジェクトグラフ３００は、マークされたヒープ３２０上の何れのオブジェクトが未実行コールスタック部分３１０によって到達可能であるかを決定するのに利用される。即ち、未実行コールスタック部分３１０に含まれるルートオブジェクトは、マークされたヒープ３２０上の対応するメモリー位置まで追跡され、そのようなメモリー位置は到達可能であると考えられる。更にまた、ルートオブジェクトの追跡が到達可能なポインター値に対して引き続いて実施されて、それらのポインター値によって参照される到達可能オブジェクトが特定されることが企図される。ここで、到達可能な整数値に対しては、そのような整数値は他の値を参照していないため、後続の追跡はスキップされることが可能であることが留意される。この特定の例に関して、到達可能オブジェクト３９０はポインター値に対応するルートオブジェクトであるので、後続の追跡が到達可能オブジェクト３９０に対して実施され、これは整数値に対応する到達可能オブジェクト３８０を特定する。しかしながら、到達可能オブジェクト３４０及び３７０に対しては、これらは整数値に対応するルートオブジェクトであるため、後続の追跡はスキップされることができる。
【００２２】
[0031]  オブジェクトグラフ３００はまた、未実行コールスタック部分３１０によって到達不能なオブジェクトを特定するのにも利用されることが可能である、ということが留意されるべきである。この特定の例において、到達不能オブジェクト３５０及び３６０は、それらが未実行コールスタック部分３１０のルートオブジェクトに対応しておらず、また到達可能なポインターオブジェクトによって参照されてもいないため、到達不能であると考えられる。
【００２３】
[0032]  到達可能／到達不能オブジェクトを特定すると、当該到達可能又は到達不能オブジェクトの少なくとも一方が、互いに容易に識別できるようにマークされることが企図される。一側面において、そのようなマークは、コールスタックの実行と同時に行われる。この特定の例に関して、到達可能オブジェクト３４０、到達可能オブジェクト３７０、到達可能オブジェクト３８０、及び到達可能オブジェクト３９０は「１」でマークされるのに対し、到達不能オブジェクト３５０及び到達不能オブジェクト３６０は「０」でマークされる。ここで、当業者であれば、オブジェクトをマークすることは、例えばそれぞれのオブジェクト表現の中でビットをそのようなマークに指定することを含む、複数の方法のうちの任意によって達成され得るということを理解するであろう。
【００２４】
[0033]  オブジェクトグラフが適切にマークされた後、到達不能であると特定されたヒープオブジェクトに以前割り当てられていたメモリーが、クリアされることが可能である。一側面において、そのようなメモリーのクリアは、コールスタックの実行と同時に行われる。次に図４を参照すると、一実施態様による例示的なメモリーの解放を示す図が提供されている。図示されるように、オブジェクトグラフ４００はスイープされたヒープ４２０を含んでおり、ヒープ４２０は概してヒープ２００及び３２０に類似するものである。ここで、ヒープ４２０は、到達不能オブジェクト３５０及び３６０に以前割り当てられていたメモリーの解放を表している。即ち、ヒープ４２０は今や、使用可能メモリー４３０に加えて、解放されたメモリー４５０及び４６０を含んでいる。しかしながら、一側面において、到達可能オブジェクト４４０、４７０、４８０、及び４９０は、それらの最初の記憶位置に保持されている（即ち、スイープされたヒープ４２０は縮小していない）。
【００２５】
[0034]  次に図５を参照すると、様々な側面に従って保守的ガベージコレクションのアルゴリズムを実装するように構成された例示的なメモリー管理ユニットがブロック図に示されている。図示されるように、メモリー管理ユニット５００は、プロセッサーコンポーネント５１０、メモリーコンポーネント５２０、ヒープコンポーネント５３０、追跡コンポーネント５４０、マークコンポーネント５５０、及び再利用コンポーネント５６０を含むことが可能である。
【００２６】
[0035]  一側面において、プロセッサーコンポーネント５１０は、複数の機能のうちの任意を実施することに関連するコンピューター読み取り可能命令を実行するように構成される。プロセッサーコンポーネント５１０は、メモリー管理ユニット５００から通信される情報の分析、及び／又は、メモリーコンポーネント５２０、ヒープコンポーネント５３０、追跡コンポーネント５４０、マークコンポーネント５５０、及び／又は再利用コンポーネント５６０によって利用され得る情報の生成を専門に行う、単一のプロセッサー又は複数のプロセッサーであり得る。加えて、又は代わりに、プロセッサーコンポーネント５１０は、メモリー管理ユニット５００の中の１又は複数のコンポーネントを制御するように構成されることが可能である。
【００２７】
[0036]  別の側面において、メモリーコンポーネント５２０は、プロセッサーコンポーネント５１０に接続され、プロセッサーコンポーネント５１０によって実行されるコンピューター読み取り可能命令を格納するように構成される。メモリーコンポーネント５２０はまた、ヒープコンポーネント５３０、追跡コンポーネント５４０、マークコンポーネント５５０、及び／又は再利用コンポーネント５６０のうちの任意によって生成されたデータを含む、複数の他の種類のデータのうちの任意のものを格納するように構成されることも可能である。メモリーコンポーネント５２０は、ランダムアクセスメモリー、電池でバックアップされたメモリー、ハードディスク、磁気テープ等を含む、数多くの異なる構成に構成されることが可能である。圧縮、及び自動バックアップ、例えば独立ドライブ冗長アレイ構成の使用といったような、様々な機能がメモリーコンポーネント５２０上に実装されることも可能である。
【００２８】
[0037]  図示されるように、メモリー管理ユニット５００はまた、ヒープコンポーネント５３０及び追跡コンポーネント５４０を含むことも可能である。そのような実施態様の範囲内において、ヒープコンポーネント５３０は、スクリプトの実行中にオブジェクトのヒープを生成するように構成されるのに対し、追跡コンポーネント５４０は、前記スクリプトの未実行部分に含まれているスクリプトオブジェクトをヒープ上の対応する１組のメモリー位置まで追跡するように構成される。
【００２９】
[0038]  別の側面において、メモリー管理デバイス５００は、更に、マークコンポーネント５５０を含む。そのような実施態様の範囲内において、マークコンポーネント５５０は、前記スクリプトの実行と同時に前記ヒープの少なくとも一部分をマークするように構成される。この実施態様に関して、マークされたヒープは、前記スクリプトの未実行部分によって到達可能である到達可能オブジェクトと共に、前記スクリプトの未実行部分によって到達不能であると考えられる到達不能オブジェクトを含む。
【００３０】
[0039]  更なる側面において、メモリー管理デバイス５００はまた、再利用コンポーネント５６０をも含む。そのような実施態様の範囲内において、再利用コンポーネント５６０は、前記スクリプトの実行と同時に、また前記マークされたヒープに従って、前記到達不能オブジェクトに割り当てられたメモリーを解放するように構成される。ある特定の実施態様において、再利用コンポーネント５６０は、到達不能オブジェクトに割り当てられていたメモリーの全体部分の解放に先立って、到達不能オブジェクトに割り当てられていたメモリーの一部分を再利用するように構成されることが可能である。別の実施態様において、再利用コンポーネント５６０は、到達可能オブジェクトをヒープの最初の記憶位置にそれぞれ保持するように構成されることが可能である。例えば、再利用コンポーネント５６０は、ヒープ内の固定された１組の境界線に従ってヒープオブジェクトの区切りを維持するように構成されることが可能である。
【００３１】
[0040]  いくつかの実施態様に関して、メモリー管理デバイス５００は、ヒープコンポーネント５３０がオブジェクトのヒープを生成するための起源であるところのスクリプトを実行するように構成されることが可能である。この目的のために、メモリー管理デバイス５００は、複数のスクリプトタイプのうちの任意を実行するように構成されることが可能である、ということが認識されるべきである。例えば、ある特定の実施態様において、メモリー管理デバイス５００は、ジャバスクリプトをコンパイルするように構成される。スクリプトを実行すると、メモリー管理デバイス５００は、その場合、当該スクリプトの実行に基づいて文書オブジェクトモデルを変更するように更に構成されることが可能である、ということが企図される。
【００３２】
[0041]  図６は、一実施態様による保守的ガベージコレクションのアルゴリズムを実装するための例示的で非限定的な実施態様を示すフロー図である。６００において、スクリプトの実行中にオブジェクトのヒープが生成される。次に、６１０において、前記スクリプトの未実行部分に含まれているスクリプトオブジェクトが、ヒープ上の対応する１組のメモリー位置まで追跡される。ヒープは、次いで、６２０において、前記スクリプトの実行と同時にマークされる。この特定の実施態様に関して、マークされたヒープは、前記スクリプトの未実行部分によって到達可能である到達可能オブジェクトと共に、前記スクリプトの未実行部分によって到達不能である到達不能オブジェクトを含む。６４０において、前記到達不能オブジェクトに割り当てられたメモリーが、次いで、前記マークされたヒープに基づいて前記スクリプトの実行と同時に解放される。
【００３３】
[0042]  次に図７を参照すると、様々な側面に従ってオブジェクトを同時にマーク及びスイープするように構成された例示的なリソース管理ユニットがブロック図に示されている。図示されるように、リソース管理ユニット７００は、プロセッサーコンポーネント７１０、メモリーコンポーネント７２０、グラフコンポーネント７３０、追跡コンポーネント７４０、マークコンポーネント７５０、及び解放コンポーネント７６０を含むことが可能である。
【００３４】
[0043]  メモリー管理ユニット５００におけるプロセッサーコンポーネント５１０と同様に、プロセッサーコンポーネント７１０は、複数の機能のうちの任意を実施することに関連するコンピューター読み取り可能命令を実行するように構成される。プロセッサーコンポーネント７１０は、リソース管理ユニット５００から通信される情報の分析、及び／又は、メモリーコンポーネント７２０、グラフコンポーネント７３０、追跡コンポーネント７４０、マークコンポーネント７５０、及び／又は解放コンポーネント７６０によって利用され得る情報の生成を専門に行う、単一のプロセッサー又は複数のプロセッサーであり得る。加えて、又は代わりに、プロセッサーコンポーネント７１０は、リソース管理ユニット７００の中の１又は複数のコンポーネントを制御するように構成されることが可能である。
【００３５】
[0044]  別の側面において、メモリーコンポーネント７２０は、プロセッサーコンポーネント７１０に接続され、プロセッサーコンポーネント７１０によって実行されるコンピューター読み取り可能命令を格納するように構成される。メモリーコンポーネント７２０はまた、グラフコンポーネント７３０、追跡コンポーネント７４０、マークコンポーネント７５０、及び／又は解放コンポーネント７６０のうちの任意によって生成されたデータを含む、複数の他の種類のデータのうちの任意のものを格納するように構成されることも可能である。ここで、メモリーコンポーネント７２０は、メモリー管理ユニット５００におけるメモリーコンポーネント５２０に類似するものであることが留意される。したがって、メモリーコンポーネント５２０の前述された機能／構成のうちの任意のものがメモリーコンポーネント７２０にも適用できる、ということが認識されることが可能である。
【００３６】
[0045]  図示されるように、リソース管理ユニット７００はまた、グラフコンポーネント７３０及び追跡コンポーネント７４０を含むことも可能である。そのような実施態様の範囲内において、グラフコンポーネント７３０は、コールスタックに関連付けられたオブジェクトグラフを生成するように構成されるのに対し、追跡コンポーネント７４０は、前記オブジェクトグラフを追跡して、前記コールスタックの未実行部分に含まれているスクリプトオブジェクトがヒープ上の対応する１組のメモリー位置まで追跡されるようにするように構成される。
【００３７】
[0046]  別の側面において、リソース管理ユニット７００は、更に、マークコンポーネント７５０を含む。そのような実施態様の範囲内において、マークコンポーネント７５０は、前記コールスタックの実行と同時にヒープオブジェクトをマークするように構成される。この実施態様に関して、マークされたヒープは、前記コールスタックの未実行部分によって到達可能である到達可能オブジェクトと共に、前記コールスタックの未実行部分によって到達不能であると考えられる到達不能オブジェクトを含む。
【００３８】
[0047]  図示されるように、リソース管理ユニット７００はまた、解放コンポーネント７６０を含むことも可能である。そのような実施態様の範囲内において、解放コンポーネント７６０は、前記到達不能オブジェクトに割り当てられたメモリーをコールスタックの実行と同時にクリアするように構成される。ここで、そのようなメモリーは、マークコンポーネント７５０が確認したマークされたヒープに基づいてクリアされることが可能であることが企図される。一側面において、解放コンポーネント７６０は、更に、コールスタックの未実行部分によって到達可能なオブジェクトの記憶をヒープ内の最初の記憶位置にそれぞれ保持するように構成されることが可能である。別の側面において、解放コンポーネント７６０は、到達不能オブジェクトに割り当てられていたメモリーの一部分を再利用するように構成されることが可能である。この特定の実施態様に関して、解放コンポーネント７６０は、更に、そのような一部分を、到達不能オブジェクトに割り当てられていたメモリーの全体部分の解放に先立って再利用するように構成されることが可能である。
【００３９】
[0048]  図８は、一実施態様に従ってオブジェクトを同時にマーク及びスイープするための例示的で非限定的な実施態様を示すフロー図である。８００において、コールスタックに関連付けられたオブジェクトグラフが生成される。８１０において、次いで前記オブジェクトグラフが追跡されて、その結果、前記コールスタックの未実行部分に含まれているスクリプトオブジェクトがヒープ上の対応する１組のメモリー位置まで追跡されるようになる。次に、８２０において、ヒープオブジェクトが前記コールスタックの実行と同時にマークされる。この特定の実施態様に関して、マークされたヒープは、前記コールスタックの未実行部分によって到達可能である到達可能オブジェクトと共に、前記コールスタックの未実行部分によって到達不能である到達不能オブジェクトを含む。８３０において、前記到達不能オブジェクトに割り当てられたメモリーが、次いで、前記マークされたヒープに基づいて前記コールスタックの実行と同時にクリアされる。
【００４０】
＜例示的なネットワーク及び分散環境＞
[0049]  本明細書において説明された、保守的ガベージコレクションのアルゴリズムの範囲内でオブジェクトを同時にマーク及びスイープするための様々な実施態様は、任意のコンピューター又は他のクライアント若しくはサーバーデバイスに関連して実現され得るということを、当業者は認識することが可能である。当該任意のコンピューター又は他のクライアント若しくはサーバーデバイスは、コンピューターネットワークの一部分として、又は分散コンピューティング環境において配置されることが可能であり、また、任意の種類のデータストアに接続されることが可能である。この点について、本明細書において説明された様々な実施態様は、任意の数のメモリー又は記憶ユニット、並びに、任意の数の記憶ユニットにわたって行われる任意の数のアプリケーション及びプロセスを有している、任意のコンピューターシステム又は環境において実現されることが可能である。これには、限定ではないが、ネットワーク環境又は分散コンピューティング環境に配置され、リモート又はローカルの記憶装置を有している、サーバーコンピューター及びクライアントコンピューターを備えた環境が含まれる。
【００４１】
[0050]  図９は、例示的なネットワーク又は分散コンピューティング環境の非限定的な模式図を提供している。分散コンピューティング環境は、コンピューティングオブジェクト即ちデバイス９１０、９１２等及びコンピューティングオブジェクト即ちデバイス９２０、９２２、９２４、９２６、９２８等を備え、それらは、アプリケーション９３０、９３２、９３４、９３６、９３８によって表されるような、プログラム、メソッド、データストア、プログラマブルロジック等を含むことができる。コンピューティングオブジェクト即ちデバイス９１０、９１２等及びコンピューティングオブジェクト即ちデバイス９２０、９２２、９２４、９２６、９２８等は、例えばＰＤＡ、音声／映像デバイス、携帯電話端末、ＭＰ３プレーヤー、ラップトップ等の様々なデバイスを含むことができる、ということが認識されることが可能である。
【００４２】
[0051]  それぞれのコンピューティングオブジェクト即ちデバイス９１０、９１２等及びコンピューティングオブジェクト即ちデバイス９２０、９２２、９２４、９２６、９２８等は、通信ネットワーク９４０を直接的又は間接的に通じて、１又は複数の他のコンピューティングオブジェクト即ちデバイス９１０、９１２等及びコンピューティングオブジェクト即ちデバイス９２０、９２２、９２４、９２６、９２８等と通信することが可能である。図９において単一の要素として示されているが、ネットワーク９４０は、図９のシステムにサービスを提供する他のコンピューティングオブジェクト及びコンピューティングデバイスを含むこと、及び／又は、図示されていない多数の相互接続されたネットワークを表すことができる。それぞれのコンピューティングオブジェクト即ちデバイス９１０、９１２等又は９２０、９２２、９２４、９２６、９２８等はまた、様々な実施態様に従って提供されたようなメモリー管理システムとの通信又はその実装に適した、ＡＰＩ、又は他のオブジェクト、ソフトウェア、ファームウェア、及び／又はハードウェアを利用するかもしれないアプリケーション、例えばアプリケーション９３０、９３２、９３４、９３６、９３８を収容することも可能である。
【００４３】
[0052]  分散コンピューティング環境をサポートする様々なシステム、コンポーネント、及びネットワーク構成が存在する。例えば、コンピューティングシステムは、有線又は無線システムによって、ローカルネットワーク又は広域分散ネットワークによって、一緒に接続されることが可能である。現在では、多くのネットワークがインターネットに接続されており、インターネットは、広域分散コンピューティングのための基盤を提供し、多くの異なるネットワークを包含している。もっとも、様々な実施態様において説明されたような手法に付随する例示的な通信のために、任意のネットワーク基盤が使用可能である。
【００４４】
[0053]  よって、クライアント／サーバー型、ピアツーピア型、又は複合型のアーキテクチャーといったような、ネットワークトポロジー及びネットワーク基盤のホストが利用されることが可能である。クライアント／サーバー型のアーキテクチャー、特にネットワーク接続されたシステムにおいて、クライアントは、通常、別のコンピューター、例えばサーバーによって提供される共有ネットワークリソースにアクセスするコンピューターである。あらゆるコンピューターは状況に応じてクライアント、サーバー、又はその両方とみなされ得るが、図９の具体例では、非限定的な例として、コンピューティングオブジェクト即ちデバイス９２０、９２２、９２４、９２６、９２８等は、クライアントとみなされることが可能であり、コンピューティングオブジェクト即ちデバイス９１０、９１２等は、サーバーとみなされることが可能である。ここで、コンピューティングオブジェクト即ちデバイス９１０、９１２等は、例えば、コンピューティングオブジェクト即ちデバイス９２０、９２２、９２４、９２６、９２８等からのデータの受信、データの格納、データの処理、コンピューティングオブジェクト即ちデバイス９２０、９２２、９２４、９２６、９２８等へのデータの送信といったようなデータサービスを提供する。これらのコンピューティングデバイスのいずれも、データを処理し、又は任意のプラットフォームからサービス及び１又は複数の実施形態について本明細書に記載のように関連技術のような情報のための基盤を巻き込むことができるサービスまたはタスクを要求してもよい。
【００４５】
[0054]  サーバーは、一般に、インターネット又は無線ネットワーク基盤等のリモート又はローカルのネットワークを介してアクセス可能なリモートコンピューターシステムである。クライアントのプロセスが第１のコンピューターシステムにおいて稼動状態にあり、サーバーのプロセスが第２のコンピューターシステムにおいて稼動状態にあることが可能である。それらは、通信媒体を介して相互に通信し、それにより、分散機能を提供し、また、多数のクライアントがサーバーの情報収集能力を活用することを可能にする。ユーザープロファイルに従って利用される任意のソフトウェアオブジェクトは、スタンドアロンで提供され、又は、多数のコンピューティングデバイス若しくはオブジェクトにわたって分散されることが可能である。
【００４６】
[0055]  例えば、通信ネットワーク／バス９４０がインターネットであるネットワーク環境において、コンピューティングオブジェクト即ちデバイス９１０、９１２等は、コンピューティングオブジェクト即ちデバイス９２０、９２２、９２４、９２６、９２８等がＨＴＴＰ等の多くのよく知られたプロトコルのうちの任意によって通信するウェブサーバーであり得る。言及されたように、分散コンピューティング環境に特有なことであるが、コンピューティングオブジェクト即ちデバイス９１０、９１２等はまた、コンピューティングオブジェクト即ちデバイス９２０、９２２、９２４、９２６、９２８等として機能することも可能であり、その逆も同様である。
【００４７】
＜例示的なコンピューティングデバイス＞
[0056]  言及されたように、本明細書において説明された様々な実施態様は、保守的ガベージコレクションのアルゴリズムの範囲内でオブジェクトを同時にマーク及びスイープするための基盤を実装することが望ましいであろう任意のデバイスに適合する。したがって、ハンドヘルド型、ポータブル型、及び他のコンピューティングデバイス、並びにあらゆる種類のコンピューティングオブジェクトが、本明細書において、即ち保守的ガベージコレクションのアルゴリズムをタグ付けされた整数によって実装することに関連する何らかの機能をデバイスが提供し得る任意の箇所において説明された、様々な実施態様に関する使用のために企図されるということが理解される。それ故に、図１０において後述される以下の汎用リモートコンピューターはほんの一例であり、主題の開示に関する実施態様は、ネットワーク／バスの相互運用性及び対話を有する任意のクライアントによって実現されることができる。
【００４８】
[0057]  必須ではないが、実施態様の何れもが、部分的には、デバイス若しくはオブジェクトのためのサービスの開発者によって使用されるための、及び／又は、使用可能コンポーネントに関連して動作するアプリケーションソフトウェアに含まれる、オペレーティングシステムを介して実現されることが可能である。ソフトウェアは、クライアントワークステーション、サーバー、又は他のデバイスといったような１又は複数のコンピューターによって実行される、プログラムモジュール等のコンピューター実行可能命令の一般的な文脈で説明されることができる。当業者は、様々なコンピューターシステム構成及びプロトコルによってネットワークの対話が実施されることができることを認識するだろう。
【００４９】
[0058]  図１０は、したがって、実施態様の１又は複数が実現されることのできる好適なコンピューティングシステム環境１０００の一例を示している。しかし、上で明らかとされたように、コンピューティングシステム環境１０００は、好適なコンピューティング環境の１つの例に過ぎず、何れの実施態様の利用又は機能の範囲について如何なる限定を示唆することを意図されるものではない。コンピューティング環境１０００は、例示的な動作環境１０００に示されたコンポーネントのうち任意の１つ又は組み合わせに関して如何なる依存関係又は要件を有しているものと解されてはならない。
【００５０】
[0059]  図１０に関して、本明細書における１又は複数の実施態様を実現するための例示的なリモートデバイスは、ハンドヘルド型コンピューター１０１０の形態の汎用コンピューティングデバイスを含むことが可能である。ハンドヘルド型コンピューター１０１０のコンポーネントは、限定ではないが、処理装置１０２０、システムメモリー１０３０、及び、システムメモリーを含む様々なシステムコンポーネントを処理装置１０２０に接続するシステムバス１０２１を含むことができる。
【００５１】
[0060]  コンピューター１０１０は、一般に様々なコンピューター読み取り可能媒体を含み、コンピューター１０１０によってアクセスされることが可能な任意の利用可能媒体であり得る。システムメモリー１０３０は、リードオンリーメモリー（ＲＯＭ）及び／又はランダムアクセスメモリー（ＲＡＭ）等の揮発性及び／又は不揮発性メモリーの形態のコンピューター記憶媒体を含むことができる。限定ではなく例として、メモリー１０３０はまた、オペレーティングシステム、アプリケーションプログラム、他のプログラムモジュール、及びプログラムデータを含むこともできる。
【００５２】
[0061]  ユーザーは、入力デバイス１０４０を通じてコンピューター１０１０にコマンド及び情報を入力することができる。モニター又は他の種類のディスプレイデバイスも、出力インターフェース１０５０等のインターフェースを介してシステムバス１０２１に接続される。モニターに加えて、コンピューターは、スピーカー及びプリンター等の他の周辺出力デバイスを含むこともでき、それらは出力インターフェース１０５０を通じて接続されることができる。
【００５３】
[0062]  コンピューター１０１０は、リモートコンピューター１０７０等の１又は複数の他のリモートコンピューターへの論理接続を用いて、ネットワーク環境又は分散環境で動作することができる。リモートコンピューター１０７０は、パーソナルコンピューター、サーバー、ルーター、ネットワークＰＣ、ピアデバイス若しくは他の共通ネットワークノード、又は、任意の他のリモートメディア消費若しくは伝送デバイスとすることができ、コンピューター１０１０に関連して上述された要素の任意又は全てを含むことができる。図１０に示された論理接続は、ローカルエリアネットワーク（ＬＡＮ）又はワイドエリアネットワーク（ＷＡＮ）等のネットワーク１０７１を含むが、他のネットワーク／バスを含むこともできる。そのようなネットワーク環境は、家庭、オフィス、企業規模のコンピューターネットワーク、イントラネット、及びインターネットにおいてありふれたものである。
【００５４】
[0063]  上で言及されたように、様々なコンピューティングデバイス、ネットワーク、及び広告アーキテクチャーに関連して例示的な実施態様が説明されてきたけれども、根底にある概念は、メモリーを管理することが望ましい任意のネットワークシステム及び任意のコンピューティングデバイス又はシステムに適用されることができる。
【００５５】
[0064]  本明細書において説明された実施態様の１又は複数を実現する多数の方法が存在する。例えば、適切なＡＰＩ、ツールキット、ドライバーコード、オペレーティングシステム、コントロール、スタンドアロンの又はダウンロード可能なソフトウェアオブジェクト等であり、それらは、アプリケーション及びサービスが任意のプラットフォームからメモリー管理を利用することを可能にする。実施態様は、説明された実施態様の１又は複数によるメモリー管理システムの提供を容易化するソフトウェア又はハードウェアオブジェクトからだけでなく、ＡＰＩ（又は他のソフトウェアオブジェクト）の観点からも企図されることができる。本明細書において説明された様々な具体例及び実施態様は、ソフトウェアである側面に加えて、全体的にハードウェアである側面、部分的にハードウェアであり部分的にソフトウェアである側面を有することができる。
【００５６】
[0065]  「例示的」という語は、本明細書において、例、事例、又は実例として利用できることを意味するために用いられている。誤解を避けるために、本明細書において開示された主題は、そのような例によって限定されることはない。加えて、本明細書において「例示的」として記載された任意の側面又は設計は、必ずしも他の側面又は設計に対して好適又は有利であると解されてはならず、また当業者に知られた均等の例示的な構造及び手法を排除することは意図されていない。更に、「含む（include）」、「有する」、「含む（contain）」という用語及び他の類似の語が詳細な説明又は特許請求の範囲のどちらかで用いられる限りにおいて、誤解を避けるために、そのような用語は、付加的な又は他のどのような要素も排除することなく、開放移行語として「備える（comprising）」という用語と同様に包括的であることを意図される。
【００５７】
[0066]  言及されたように、本明細書において説明された様々な手法は、ハードウェア若しくはソフトウェアに関連して、又は、適切な場合には両者の組み合わせに関連して実施されることができる。本明細書において用いられる場合、「コンポーネント」、「システム」等の用語は、同様に、コンピューター関連エンティティー、即ち、ハードウェア、ハードウェアとソフトウェアの組み合わせ、ソフトウェア、又は実行中のソフトウェアの何れをも参照することを意図されている。例えば、コンポーネントは、限定されないが、プロセッサー上で動作しているプロセス、プロセッサー、オブジェクト、実行可能ファイル、実行スレッド、プログラム、及び／又はコンピューターであり得る。実例として、コンピューター上で動作しているアプリケーションと当該コンピューターの両方がコンポーネントであり得る。プロセス及び／又は実行スレッド内に１又は複数のコンポーネントが常駐することができ、また、コンポーネントが１つのコンピューター上にローカルに配置及び／又は２以上のコンピューター間に分散して配置されることができる。
【００５８】
[0067]  前述のシステムは、いくつかのコンポーネント間における相互作用に関連して説明されてきた。そのようなシステム及びコンポーネントは、それらのコンポーネント若しくは指定されたサブコンポーネント、指定されたコンポーネント若しくはサブコンポーネントの一部、及び／又は追加のコンポーネントを含むこと、並びに、それらの様々な順列及び組み合わせに従うことが可能である、ということが理解され得る。サブコンポーネントは、親コンポーネント（階層的）の中に含まれるのではなく、他のコンポーネントに通信可能に接続されたコンポーネントとして実施されることも可能である。加えて、１又は複数のコンポーネントが、集合的機能を提供する単一のコンポーネントに結合され、又はいくつかの独立したサブコンポーネントに分割されることができ、また、統合機能を提供するために任意の１又は複数の中間レイヤー、例えば管理レイヤーが、そのようなサブコンポーネントに通信可能に結合するように提供されることができる、ということが留意される。本明細書において説明された任意のコンポーネントは、本明細書において具体的には説明されていないが当業者によって広く知られている１又は複数の他のコンポーネントと相互作用することもできる。
【００５９】
[0068]  上で説明された例示的なシステムを考慮して、開示された主題に従って実施され得る方法論は、様々な図のフローチャートを参照して理解されることが可能である。説明の簡略化のために方法論は一連のブロックとして示され説明されるが、いくつかのブロックは本明細書において述べられ説明されたものとは異なる順序で、及び／又は他のブロックと同時に行われることができるので、特許請求の範囲に記載された主題は、ブロックの順序によって限定されることはない、ということが理解され認識されなければならない。フローチャートによって非順次的な即ち分岐したフローが示されている場合、同一の又は同様の結果を達成する様々な他の分岐、フロー経路、及びブロック順序が実施されることができる、ということが認識可能である。その上、図示された全てのブロックが以下に説明される方法論を実施するのに必要とされるわけではない。
【００６０】
[0069]  いくつかの実施態様において、クライアント側の視点が示されているが、誤解を避けるために、対応するサーバーの視点が存在することが理解されなければならず、その逆も同様である。同様に、方法が実施される場合、記憶装置と１又は複数のコンポーネントによってその方法を実施するように構成された少なくとも１つのプロセッサーとを有した対応デバイスが提供されることが可能である。
【００６１】
[0070]  様々な図の好適な実施態様に関連して様々な実施態様が説明されてきたが、他の類似の実施態様が用いられ得ること、又は、説明された実施態様に対して、当該実施態様から逸脱することなく同一の機能を実施するための変形及び追加がなされ得ることが、理解されなければならない。その上更に、上述された実施態様の１又は複数の側面は、複数の処理チップ若しくはデバイスにおいて又はそれらにわたって実施されることができ、また、記憶装置は、同様に、複数のデバイスにわたって影響を受けることができる。したがって、本発明は、何れの単一の実施態様にも限定されるべきではなく、添付された特許請求の範囲に応じた幅及び範囲で解釈されるべきである。
【図１】
2014513342.tif 000003
【図２】
2014513342.tif 000004
【図３】
2014513342.tif 000005
【図４】
2014513342.tif 000006
【図５】
2014513342.tif 000007
【図６】
2014513342.tif 000008
【図７】
2014513342.tif 000009
【図８】
2014513342.tif 000010
【図９】
2014513342.tif 000011
【図１０】
2014513342.tif 000012
【国際調査報告】
2014513342.tif 000013
2014513342.tif 000014