JP2014513342A - メモリー管理のための同時マーク及び同時スイープによる保守的ガベージコレクション - Google Patents

メモリー管理のための同時マーク及び同時スイープによる保守的ガベージコレクション Download PDF

Info

Publication number
JP2014513342A
JP2014513342A JP2014502588A JP2014502588A JP2014513342A JP 2014513342 A JP2014513342 A JP 2014513342A JP 2014502588 A JP2014502588 A JP 2014502588A JP 2014502588 A JP2014502588 A JP 2014502588A JP 2014513342 A JP2014513342 A JP 2014513342A
Authority
JP
Japan
Prior art keywords
heap
script
component
memory
objects
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2014502588A
Other languages
English (en)
Inventor
ルッソ,スティーブン
マン,カーティス・チェン−チェン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2014513342A publication Critical patent/JP2014513342A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0269Incremental or concurrent garbage collection, e.g. in real-time systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management
    • G06F2212/702Conservative garbage collection

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

保守的ガベージコレクションに関する側面が開示される。一側面において、スクリプトの実行中にオブジェクトのヒープが生成され、そして、未実行部分のスクリプトオブジェクトが、ヒープ上の対応するメモリー位置まで追跡される。ヒープは、次いで、前記スクリプトを実行するのと同時にマークされ、その結果、マークされたヒープが到達可能オブジェクトと到達不能オブジェクトを含むようになる。前記到達不能オブジェクトに割り当てられたメモリーが、次いで、前記マークに基づいて前記スクリプトの実行と同時に解放される。別の側面において、コールスタックに関連付けられたオブジェクトグラフが生成及び追跡され、その結果、前記スタックの未実行部分に含まれるスクリプトオブジェクトがヒープ上の対応するメモリー位置まで追跡される。ヒープオブジェクトは前記スタックの実行と同時にマークされ、マークされたヒープが到達可能オブジェクトと到達不能オブジェクトを含むようになる。前記到達不能オブジェクトに割り当てられたメモリーが、次いで、前記マークされたヒープに基づいて前記スタックの実行と同時にクリアされる。
【選択図】図1

Description

[0001] いくつかの従来のシステムに関する背景として、コンピューティングデバイスは、伝統的に情報や関連アプリケーションを格納してきたということが留意される。これらの目的及び関連する目的のため、効率的なメモリー管理方式の実装は最適なコンピューティング性能を達成するのに役立つことが可能である、ということが更に留意される。自動的なメモリー管理方式の発展は、マニュアルのメモリー管理方式よりも良好な性能を発揮してきた。例えば、ガベージコレクターアルゴリズムは、自動的なメモリー管理方式であり、特定のプログラムによって最早使われていないオブジェクトが占有していたメモリーを再利用することを試みる。
[0002] トレーシングガベージコレクターは、一般的な種類のガベージコレクターである。トレーシングガベージコレクターは、まず、どのオブジェクトが到達可能(又は潜在的に到達可能)であるかを判定し、次に、残りの全てのオブジェクトを破棄する。到達可能オブジェクトは、他の到達可能オブジェクトから直接的にであっても参照を通じてであってもその到達可能オブジェクトへと至るプログラム環境の中にいくつかの変数が存在しているオブジェクトとして、規定されることができる。より正確には、オブジェクトは一般に2つの方法で到達可能である。第1に、ルートとして知られる識別されたオブジェクトのセットが到達可能であると想定される。これらは典型的に、コールスタック(即ち、現在呼び出し中の関数内の全ローカル変数及びパラメーター)の任意の場所から、また任意のグローバル変数から参照される、あらゆるオブジェクトを含む。第2に、到達可能オブジェクトから参照される任意のものがそれ自体、到達可能であると考えられる。しかしながら、従来のガベージコレクターによる問題は、ガベージコレクターが、最早到達可能でなくなったオブジェクトに割り当てられたメモリーを素早く且つ効率的に解放する必要があるということである。
[0003] 今日のメモリー管理方式についての上述された欠点は、単に従来のシステムの問題点のいくつかに関する概観を提供することを意図されているのであって、網羅的であることを意図されていない。現状技術による他の問題点、及び様々な非限定的な実施態様のいくつかについての対応する利点は、以下の詳細な説明を検討することで更に明らかとなるだろう。
[0004] 詳細な説明及び添付図面において以下に述べられる例示的で非限定的な実施態様の様々な側面に関する基本的なあるいは概括的な理解を可能にするのに役立つよう、簡略化された概要がここに提供される。しかしながら、この概要は、広範なあるいは網羅的な概観としては意図されていない。むしろ、この概要の唯一の目的は、いくつかの例示的で非限定的な実施態様に関するいくつかの概念を、以下に述べる様々な実施態様のより詳細な説明への前奏として簡略化された形で提示することである。
[0005] 1又は複数の実施態様及び対応する開示に従って、メモリー管理のための保守的ガベージコレクションに関連して様々な非限定的な側面が説明される。そのような1つの側面において、保守的ガベージコレクションのアルゴリズムの範囲内でオブジェクトを同時にマーク及びスイープするための方法が提供される。この方法は、スクリプトの実行中にオブジェクトのヒープを生成するステップと、前記スクリプトの未実行部分に含まれているスクリプトオブジェクトをヒープ上の対応する1組のメモリー位置まで追跡するステップとを含むことが可能である。この実施態様は、更に、前記スクリプトの実行と同時に前記ヒープの少なくとも一部分をマークして、マークされたヒープが到達可能オブジェクト及び到達不能オブジェクトを含むようにするステップを含むことが可能である。この特定の実施態様に関して、到達可能オブジェクトは前記スクリプトの未実行部分によって到達可能であるのに対して、到達不能オブジェクトは前記スクリプトの未実行部分によって到達不能である。この方法は、その上更に、前記到達不能オブジェクトに割り当てられたメモリーを、前記マークに基づいて前記スクリプトの実行と同時に解放するステップを含むことが可能である。
[0006] 別の側面において、オブジェクトを同時にマーク及びスイープするように構成されたメモリー管理デバイスが開示される。そのような実施態様の範囲内において、このメモリー管理デバイスは、メモリーに格納されたコンピューター実行可能コンポーネントを実行するように構成されたプロセッサーを含む。このコンピューター実行可能コンポーネントは、ヒープコンポーネント、追跡コンポーネント、マークコンポーネント、及び再利用コンポーネントを含む。ヒープコンポーネントは、スクリプトの実行中にオブジェクトのヒープを生成するように構成されるのに対し、追跡コンポーネントは、前記スクリプトの未実行部分に含まれているスクリプトオブジェクトをヒープ上の対応する1組のメモリー位置まで追跡するように構成される。その上、マークコンポーネントは、前記スクリプトの実行と同時に前記ヒープの少なくとも一部分をマークするように構成される。この実施態様に関して、マークされたヒープは、前記スクリプトの未実行部分によって到達可能である到達可能オブジェクトと共に、前記スクリプトの未実行部分によって到達不能である到達不能オブジェクトを含む。その上、再利用コンポーネントは、前記スクリプトの実行と同時に、また前記マークされたヒープに従って、前記到達不能オブジェクトに割り当てられたメモリーを解放するように構成される。
[0007] 更に別の側面において、保守的ガベージコレクションのアルゴリズムの範囲内でオブジェクトを同時にマーク及びスイープするためのコンピューター読み取り可能記憶媒体が開示される。そのような実施態様の範囲内において、コンピューター読み取り可能記憶媒体は、少なくとも1つのプロセッサーに様々な動作を実施させるためのコンピューター読み取り可能命令を含む。例えば、そのような動作は、コールスタックに関連付けられたオブジェクトグラフを生成するステップと、前記オブジェクトグラフを追跡して、前記コールスタックの未実行部分に含まれているスクリプトオブジェクトがヒープ上の対応する1組のメモリー位置まで追跡されるようにするステップとを含む。この実施態様は、更に、前記コールスタックの実行と同時にヒープオブジェクトをマークするステップを含む。この特定の実施態様に関して、マークされたヒープは、前記コールスタックの未実行部分によって到達可能である到達可能オブジェクトと共に、前記コールスタックの未実行部分によって到達不能である到達不能オブジェクトを含む。その上、前記到達不能オブジェクトに割り当てられたメモリーは、前記マークされたヒープに基づいて前記コールスタックの実行と同時にクリアされる。
[0008] 他の実施態様、並びに様々な非限定的な例、シナリオ、及び具体例が、以下においてより詳細に説明される。
[0009] 添付図面を参照して、様々な非限定的な実施態様が更に説明される。
[0010] 図1は、一実施態様による保守的ガベージコレクションのアルゴリズムの実装を容易化する例示的なシステムを示す。 [0011] 図2は、一実施態様による例示的なオブジェクトのヒープを示す図である。 [0012] 図3は、一実施態様による例示的なオブジェクトグラフを示す図である。 [0013] 図4は、一実施態様による例示的なメモリーの解放を示す図である。 [0014] 図5は、一実施態様による例示的なメモリー管理デバイスを示すブロック図である。 [0015] 図6は、一実施態様による保守的ガベージコレクションのアルゴリズムを実装するための例示的で非限定的な実施態様を示すフロー図である。 [0016] 図7は、一実施態様による例示的なリソース管理ユニットを示すブロック図である。 [0017] 図8は、一実施態様による同時にオブジェクトをマーク及びスイープするための例示的で非限定的な実施態様を示すフロー図である。 [0018] 図9は、本明細書において説明される様々な実施態様が実現可能な例示的で非限定的なネットワーク環境を表すブロック図である。 [0019] 図10は、本明細書において説明される様々な実施態様の1又は複数の側面が実現可能な例示的で非限定的なコンピューティングシステム又は動作環境を表すブロック図である。
<概観>
[0020] 背景において示されたように、ヒープ上の到達可能オブジェクトと到達不能オブジェクトとを識別する保守的ガベージコレクターのアルゴリズムを実装することが望ましいと言えるであろう。様々な実施態様において、ネイティブコードの互換性に基づいてメモリー管理が再設計される。一側面において、スクリプトオブジェクトは、あまり管理されていないオブジェクトであって、オブジェクトの間の参照カウントが削除されるようなメモリーの単なるネイティブな断片以上のものである。その上、保守的ガベージコレクションのアルゴリズムは実現されているが、ポインターである全てのものが知られているということは想定されていない。例えば共通言語ランタイム(CLR)のガベージコレクターでは、スタックは厳密に型指定される。しかしながら、ネイティブコード、例えばCのコード、及びスクリプトコードでは、ユーザーは何がスタック上にあるかを知ることはない。この点において、参照カウントモデルを利用することに代えて、オブジェクトが直接的に相互作用されることが企図される。
[0021] 本明細書において開示される様々な実施態様は、保守的ガベージコレクションのアルゴリズムの範囲内でオブジェクトを同時にマーク及びスイープすることに向けられている。その上、本明細書において開示される側面は、文書オブジェクトモデルと比較してスクリプト(例えばジャバスクリプト)の効率的な実行を容易化するようにオブジェクトを同時にマーク及びスイープすることに向けられている。例示的な実施態様において、同時マークは、到達可能な全てのオブジェクトが「1」を割り当てられている一方で到達可能でない全てのオブジェクトが「0」を割り当てられているヒープ上における、オブジェクトのトラバーサルを含む。ひとたび同時マークが完了すると、同時スイーパーが当該ヒープをスキャンして、到達不能オブジェクト(即ち、「0」でマークされたもの)を「空きメモリー」リスト上に配置する。
[0022] 同時スイーパーを実装することの利点は、スクリプトのスレッドの実行時にメモリーがアロケーターに戻されて再利用されるため、より少ないメモリーが使用されるということである。ここで、いくつかのデータ構造が、同時マーク及びスイープを達成することに伴って生じるということが留意されるべきである。例えば、いくつかのデータ構造は、マークされたビットとは別の未使用のビットを保持する。更に、別々のヒープブロックのページが保持されて、ページ全体が未使用と認識され得るようにすることが可能である。よって、そのようなページを再利用するのに必要とされるリソースは、ヒープブロックが不適当に多くのページに割り当てられ結果として再利用のためにより多くのリソースを必要とする従前の手法に比べて、最小化される。その上、開示された側面を実装することによって、全ページが簡単なチェックで素早く未使用と認識されることが可能である。
[0023] 別の側面において、従来のスイーパーがどのように、スイープ済みメモリーの何れかがワークを実行中のスレッドに再使用される前に全体のスイープが行われることを必要とするのかとは対照的に、スイープ処理と一緒にロックフリーキューが作成される。そのような実施態様の範囲内において、ロックフリーキューは、スイープ中にメモリーの断片をワーキングスレッド(即ち、ウェブページを実行中のスレッド)に返すことができるようにするデータ構造とすることが可能であり、これにより、ワーキングセットの一部分として使用されるメモリーの量が著しく削減される。このようにより一層増加する再利用メカニズムが開示され、そのような再利用は望ましくはより細かい粒度で実施される。
<保守的ガベージコレクションの同時マーク及びスイープ>
[0024] ごくわずかのインタラクティビティを有した情報の単調な提示からクライアント側における豊富なインタラクティビティを有したよりリッチなアプリケーション又はアプレットの体験へとウェブブラウズ体験が進化し始めるにつれて、いくつかの問題がわき上がってきた。より一般的には、ウェブブラウズ体験は、複合的な情報の表示、及び表示されたオブジェクトとのよりリッチなインタラクティビティへ進化してきた。この進化に伴う際立った挑戦は、本来はクライアント上のネイティブコードに基づく情報の単調な提示のために主として設計された旧来の文書オブジェクトモデル(DOM)を、ジャバスクリプトオブジェクト等のスクリプトコードを流れるように処理する体験に適応させることに基づいている。
[0025] スピードの向上は、滑らかなユーザー体験を容易化するのに役立つ。例えば、以前のポップアップメニューに関して、ウェブ体験は、サーバーとの通信に基づく遅延でフリッカーを生じていた。しかしながら、スクリプトによって、小さいプログラムがサーバーに戻ることなしにオンザフライでDOMを変更することが可能になる。ユーザーはサーバーに戻ることなしにオンザフライでより多くのことをしたいと考えるため、スクリプトコードを高速に実行させることは挑戦的なこととなってきた。
[0026] ユーザー体験はDOMのスクリプトを効果的に実行することによって大きく影響を受けるので、インタラクティブな応答を最大化するようにできるだけ高速にDOMを変化させることが望ましい。スクリプト実行エンジンとDOMのネイティブクラスとの間の通信は、以前には、任意のオブジェクトをスクリプト可能にする、例えばiDispatchやiActiveScript等の1組のインターフェースを含むオブジェクトのリンクと埋め込み(OLE)オートメーションの使用が原因で、貧弱であった。しかしながら、そのような方法は低速であり、それ故に改善が望まれている。したがって、本明細書に開示される側面は、保守的ガベージコレクションのアルゴリズムの範囲内でオブジェクトを同時にマーク及びスイープすることによってスクリプトの実行スピードを向上させることに向けられている。
[0027] 図1は、一実施態様に従って保守的ガベージコレクションのアルゴリズムの実装を容易化する例示的なシステムを示している。図示されるように、システム100は、メモリー120に通信可能に接続されたメモリー管理ユニット110を含むことが可能である。一側面において、メモリー管理ユニット110は、メモリー120のメモリー空間を管理するための保守的ガベージコレクションのアルゴリズムを実装するように構成される。その上、メモリー管理ユニット110は、スクリプト112の実行に関連するマークされたオブジェクトグラフ114を生成するように構成される。例えば、スクリプト112は、DOMに対して実行されるジャバスクリプトである場合があり、ここで、ジャバスクリプトは、メモリー120におけるメモリー空間の割り当てを必要とする様々なオブジェクトを含む。ある特定の実施態様において、「到達可能」であるオブジェクトと「到達不能」であるオブジェクトの識別を容易化するために、マークされたオブジェクトグラフ114に含まれるスクリプトオブジェクトは、それらがスクリプト112の未実行部分によって到達可能であるか否かに従ってマークされる。
[0028] 一側面において、スクリプトオブジェクトに割り当てられたメモリーは、そのようなオブジェクトをヒープ上に格納することを含む。次に図2を参照すると、一実施態様による例示的なオブジェクトのヒープのブロック図が提供されている。図示されるように、ヒープ200は、様々なオブジェクト220、230、240、250、260、及び270に対応する割り当て済みメモリーと共に、使用可能メモリー210を含むことが可能である。この特定の例に関して、オブジェクト240及び270はポインター値に対応するのに対し、オブジェクト220、230、250、及び260は整数値に対応する。即ち、オブジェクト240はオブジェクト230によって表される整数値を参照するポインター値であるのに対し、オブジェクト270はオブジェクト260によって表される整数値を参照するポインター値である。
[0029] 到達可能オブジェクトが到達不能オブジェクトから容易に識別できるように、ヒープオブジェクトがマークされることが可能である、ということが企図される。次に図3を参照すると、ヒープ上の到達可能/到達不能オブジェクトのマッピングを容易化する例示的なオブジェクトグラフを示す図が提供されている。図示されるように、オブジェクトグラフ300は、未実行コールスタック部分310に含まれるオブジェクトをマークされたヒープ320にマッピングする。この目的のために、マークされたヒープ320と使用可能メモリー330は、概してヒープ200と使用可能メモリー210にそれぞれ類似するものであることが留意される。
[0030] 一側面において、オブジェクトグラフ300は、マークされたヒープ320上の何れのオブジェクトが未実行コールスタック部分310によって到達可能であるかを決定するのに利用される。即ち、未実行コールスタック部分310に含まれるルートオブジェクトは、マークされたヒープ320上の対応するメモリー位置まで追跡され、そのようなメモリー位置は到達可能であると考えられる。更にまた、ルートオブジェクトの追跡が到達可能なポインター値に対して引き続いて実施されて、それらのポインター値によって参照される到達可能オブジェクトが特定されることが企図される。ここで、到達可能な整数値に対しては、そのような整数値は他の値を参照していないため、後続の追跡はスキップされることが可能であることが留意される。この特定の例に関して、到達可能オブジェクト390はポインター値に対応するルートオブジェクトであるので、後続の追跡が到達可能オブジェクト390に対して実施され、これは整数値に対応する到達可能オブジェクト380を特定する。しかしながら、到達可能オブジェクト340及び370に対しては、これらは整数値に対応するルートオブジェクトであるため、後続の追跡はスキップされることができる。
[0031] オブジェクトグラフ300はまた、未実行コールスタック部分310によって到達不能なオブジェクトを特定するのにも利用されることが可能である、ということが留意されるべきである。この特定の例において、到達不能オブジェクト350及び360は、それらが未実行コールスタック部分310のルートオブジェクトに対応しておらず、また到達可能なポインターオブジェクトによって参照されてもいないため、到達不能であると考えられる。
[0032] 到達可能/到達不能オブジェクトを特定すると、当該到達可能又は到達不能オブジェクトの少なくとも一方が、互いに容易に識別できるようにマークされることが企図される。一側面において、そのようなマークは、コールスタックの実行と同時に行われる。この特定の例に関して、到達可能オブジェクト340、到達可能オブジェクト370、到達可能オブジェクト380、及び到達可能オブジェクト390は「1」でマークされるのに対し、到達不能オブジェクト350及び到達不能オブジェクト360は「0」でマークされる。ここで、当業者であれば、オブジェクトをマークすることは、例えばそれぞれのオブジェクト表現の中でビットをそのようなマークに指定することを含む、複数の方法のうちの任意によって達成され得るということを理解するであろう。
[0033] オブジェクトグラフが適切にマークされた後、到達不能であると特定されたヒープオブジェクトに以前割り当てられていたメモリーが、クリアされることが可能である。一側面において、そのようなメモリーのクリアは、コールスタックの実行と同時に行われる。次に図4を参照すると、一実施態様による例示的なメモリーの解放を示す図が提供されている。図示されるように、オブジェクトグラフ400はスイープされたヒープ420を含んでおり、ヒープ420は概してヒープ200及び320に類似するものである。ここで、ヒープ420は、到達不能オブジェクト350及び360に以前割り当てられていたメモリーの解放を表している。即ち、ヒープ420は今や、使用可能メモリー430に加えて、解放されたメモリー450及び460を含んでいる。しかしながら、一側面において、到達可能オブジェクト440、470、480、及び490は、それらの最初の記憶位置に保持されている(即ち、スイープされたヒープ420は縮小していない)。
[0034] 次に図5を参照すると、様々な側面に従って保守的ガベージコレクションのアルゴリズムを実装するように構成された例示的なメモリー管理ユニットがブロック図に示されている。図示されるように、メモリー管理ユニット500は、プロセッサーコンポーネント510、メモリーコンポーネント520、ヒープコンポーネント530、追跡コンポーネント540、マークコンポーネント550、及び再利用コンポーネント560を含むことが可能である。
[0035] 一側面において、プロセッサーコンポーネント510は、複数の機能のうちの任意を実施することに関連するコンピューター読み取り可能命令を実行するように構成される。プロセッサーコンポーネント510は、メモリー管理ユニット500から通信される情報の分析、及び/又は、メモリーコンポーネント520、ヒープコンポーネント530、追跡コンポーネント540、マークコンポーネント550、及び/又は再利用コンポーネント560によって利用され得る情報の生成を専門に行う、単一のプロセッサー又は複数のプロセッサーであり得る。加えて、又は代わりに、プロセッサーコンポーネント510は、メモリー管理ユニット500の中の1又は複数のコンポーネントを制御するように構成されることが可能である。
[0036] 別の側面において、メモリーコンポーネント520は、プロセッサーコンポーネント510に接続され、プロセッサーコンポーネント510によって実行されるコンピューター読み取り可能命令を格納するように構成される。メモリーコンポーネント520はまた、ヒープコンポーネント530、追跡コンポーネント540、マークコンポーネント550、及び/又は再利用コンポーネント560のうちの任意によって生成されたデータを含む、複数の他の種類のデータのうちの任意のものを格納するように構成されることも可能である。メモリーコンポーネント520は、ランダムアクセスメモリー、電池でバックアップされたメモリー、ハードディスク、磁気テープ等を含む、数多くの異なる構成に構成されることが可能である。圧縮、及び自動バックアップ、例えば独立ドライブ冗長アレイ構成の使用といったような、様々な機能がメモリーコンポーネント520上に実装されることも可能である。
[0037] 図示されるように、メモリー管理ユニット500はまた、ヒープコンポーネント530及び追跡コンポーネント540を含むことも可能である。そのような実施態様の範囲内において、ヒープコンポーネント530は、スクリプトの実行中にオブジェクトのヒープを生成するように構成されるのに対し、追跡コンポーネント540は、前記スクリプトの未実行部分に含まれているスクリプトオブジェクトをヒープ上の対応する1組のメモリー位置まで追跡するように構成される。
[0038] 別の側面において、メモリー管理デバイス500は、更に、マークコンポーネント550を含む。そのような実施態様の範囲内において、マークコンポーネント550は、前記スクリプトの実行と同時に前記ヒープの少なくとも一部分をマークするように構成される。この実施態様に関して、マークされたヒープは、前記スクリプトの未実行部分によって到達可能である到達可能オブジェクトと共に、前記スクリプトの未実行部分によって到達不能であると考えられる到達不能オブジェクトを含む。
[0039] 更なる側面において、メモリー管理デバイス500はまた、再利用コンポーネント560をも含む。そのような実施態様の範囲内において、再利用コンポーネント560は、前記スクリプトの実行と同時に、また前記マークされたヒープに従って、前記到達不能オブジェクトに割り当てられたメモリーを解放するように構成される。ある特定の実施態様において、再利用コンポーネント560は、到達不能オブジェクトに割り当てられていたメモリーの全体部分の解放に先立って、到達不能オブジェクトに割り当てられていたメモリーの一部分を再利用するように構成されることが可能である。別の実施態様において、再利用コンポーネント560は、到達可能オブジェクトをヒープの最初の記憶位置にそれぞれ保持するように構成されることが可能である。例えば、再利用コンポーネント560は、ヒープ内の固定された1組の境界線に従ってヒープオブジェクトの区切りを維持するように構成されることが可能である。
[0040] いくつかの実施態様に関して、メモリー管理デバイス500は、ヒープコンポーネント530がオブジェクトのヒープを生成するための起源であるところのスクリプトを実行するように構成されることが可能である。この目的のために、メモリー管理デバイス500は、複数のスクリプトタイプのうちの任意を実行するように構成されることが可能である、ということが認識されるべきである。例えば、ある特定の実施態様において、メモリー管理デバイス500は、ジャバスクリプトをコンパイルするように構成される。スクリプトを実行すると、メモリー管理デバイス500は、その場合、当該スクリプトの実行に基づいて文書オブジェクトモデルを変更するように更に構成されることが可能である、ということが企図される。
[0041] 図6は、一実施態様による保守的ガベージコレクションのアルゴリズムを実装するための例示的で非限定的な実施態様を示すフロー図である。600において、スクリプトの実行中にオブジェクトのヒープが生成される。次に、610において、前記スクリプトの未実行部分に含まれているスクリプトオブジェクトが、ヒープ上の対応する1組のメモリー位置まで追跡される。ヒープは、次いで、620において、前記スクリプトの実行と同時にマークされる。この特定の実施態様に関して、マークされたヒープは、前記スクリプトの未実行部分によって到達可能である到達可能オブジェクトと共に、前記スクリプトの未実行部分によって到達不能である到達不能オブジェクトを含む。640において、前記到達不能オブジェクトに割り当てられたメモリーが、次いで、前記マークされたヒープに基づいて前記スクリプトの実行と同時に解放される。
[0042] 次に図7を参照すると、様々な側面に従ってオブジェクトを同時にマーク及びスイープするように構成された例示的なリソース管理ユニットがブロック図に示されている。図示されるように、リソース管理ユニット700は、プロセッサーコンポーネント710、メモリーコンポーネント720、グラフコンポーネント730、追跡コンポーネント740、マークコンポーネント750、及び解放コンポーネント760を含むことが可能である。
[0043] メモリー管理ユニット500におけるプロセッサーコンポーネント510と同様に、プロセッサーコンポーネント710は、複数の機能のうちの任意を実施することに関連するコンピューター読み取り可能命令を実行するように構成される。プロセッサーコンポーネント710は、リソース管理ユニット500から通信される情報の分析、及び/又は、メモリーコンポーネント720、グラフコンポーネント730、追跡コンポーネント740、マークコンポーネント750、及び/又は解放コンポーネント760によって利用され得る情報の生成を専門に行う、単一のプロセッサー又は複数のプロセッサーであり得る。加えて、又は代わりに、プロセッサーコンポーネント710は、リソース管理ユニット700の中の1又は複数のコンポーネントを制御するように構成されることが可能である。
[0044] 別の側面において、メモリーコンポーネント720は、プロセッサーコンポーネント710に接続され、プロセッサーコンポーネント710によって実行されるコンピューター読み取り可能命令を格納するように構成される。メモリーコンポーネント720はまた、グラフコンポーネント730、追跡コンポーネント740、マークコンポーネント750、及び/又は解放コンポーネント760のうちの任意によって生成されたデータを含む、複数の他の種類のデータのうちの任意のものを格納するように構成されることも可能である。ここで、メモリーコンポーネント720は、メモリー管理ユニット500におけるメモリーコンポーネント520に類似するものであることが留意される。したがって、メモリーコンポーネント520の前述された機能/構成のうちの任意のものがメモリーコンポーネント720にも適用できる、ということが認識されることが可能である。
[0045] 図示されるように、リソース管理ユニット700はまた、グラフコンポーネント730及び追跡コンポーネント740を含むことも可能である。そのような実施態様の範囲内において、グラフコンポーネント730は、コールスタックに関連付けられたオブジェクトグラフを生成するように構成されるのに対し、追跡コンポーネント740は、前記オブジェクトグラフを追跡して、前記コールスタックの未実行部分に含まれているスクリプトオブジェクトがヒープ上の対応する1組のメモリー位置まで追跡されるようにするように構成される。
[0046] 別の側面において、リソース管理ユニット700は、更に、マークコンポーネント750を含む。そのような実施態様の範囲内において、マークコンポーネント750は、前記コールスタックの実行と同時にヒープオブジェクトをマークするように構成される。この実施態様に関して、マークされたヒープは、前記コールスタックの未実行部分によって到達可能である到達可能オブジェクトと共に、前記コールスタックの未実行部分によって到達不能であると考えられる到達不能オブジェクトを含む。
[0047] 図示されるように、リソース管理ユニット700はまた、解放コンポーネント760を含むことも可能である。そのような実施態様の範囲内において、解放コンポーネント760は、前記到達不能オブジェクトに割り当てられたメモリーをコールスタックの実行と同時にクリアするように構成される。ここで、そのようなメモリーは、マークコンポーネント750が確認したマークされたヒープに基づいてクリアされることが可能であることが企図される。一側面において、解放コンポーネント760は、更に、コールスタックの未実行部分によって到達可能なオブジェクトの記憶をヒープ内の最初の記憶位置にそれぞれ保持するように構成されることが可能である。別の側面において、解放コンポーネント760は、到達不能オブジェクトに割り当てられていたメモリーの一部分を再利用するように構成されることが可能である。この特定の実施態様に関して、解放コンポーネント760は、更に、そのような一部分を、到達不能オブジェクトに割り当てられていたメモリーの全体部分の解放に先立って再利用するように構成されることが可能である。
[0048] 図8は、一実施態様に従ってオブジェクトを同時にマーク及びスイープするための例示的で非限定的な実施態様を示すフロー図である。800において、コールスタックに関連付けられたオブジェクトグラフが生成される。810において、次いで前記オブジェクトグラフが追跡されて、その結果、前記コールスタックの未実行部分に含まれているスクリプトオブジェクトがヒープ上の対応する1組のメモリー位置まで追跡されるようになる。次に、820において、ヒープオブジェクトが前記コールスタックの実行と同時にマークされる。この特定の実施態様に関して、マークされたヒープは、前記コールスタックの未実行部分によって到達可能である到達可能オブジェクトと共に、前記コールスタックの未実行部分によって到達不能である到達不能オブジェクトを含む。830において、前記到達不能オブジェクトに割り当てられたメモリーが、次いで、前記マークされたヒープに基づいて前記コールスタックの実行と同時にクリアされる。
<例示的なネットワーク及び分散環境>
[0049] 本明細書において説明された、保守的ガベージコレクションのアルゴリズムの範囲内でオブジェクトを同時にマーク及びスイープするための様々な実施態様は、任意のコンピューター又は他のクライアント若しくはサーバーデバイスに関連して実現され得るということを、当業者は認識することが可能である。当該任意のコンピューター又は他のクライアント若しくはサーバーデバイスは、コンピューターネットワークの一部分として、又は分散コンピューティング環境において配置されることが可能であり、また、任意の種類のデータストアに接続されることが可能である。この点について、本明細書において説明された様々な実施態様は、任意の数のメモリー又は記憶ユニット、並びに、任意の数の記憶ユニットにわたって行われる任意の数のアプリケーション及びプロセスを有している、任意のコンピューターシステム又は環境において実現されることが可能である。これには、限定ではないが、ネットワーク環境又は分散コンピューティング環境に配置され、リモート又はローカルの記憶装置を有している、サーバーコンピューター及びクライアントコンピューターを備えた環境が含まれる。
[0050] 図9は、例示的なネットワーク又は分散コンピューティング環境の非限定的な模式図を提供している。分散コンピューティング環境は、コンピューティングオブジェクト即ちデバイス910、912等及びコンピューティングオブジェクト即ちデバイス920、922、924、926、928等を備え、それらは、アプリケーション930、932、934、936、938によって表されるような、プログラム、メソッド、データストア、プログラマブルロジック等を含むことができる。コンピューティングオブジェクト即ちデバイス910、912等及びコンピューティングオブジェクト即ちデバイス920、922、924、926、928等は、例えばPDA、音声/映像デバイス、携帯電話端末、MP3プレーヤー、ラップトップ等の様々なデバイスを含むことができる、ということが認識されることが可能である。
[0051] それぞれのコンピューティングオブジェクト即ちデバイス910、912等及びコンピューティングオブジェクト即ちデバイス920、922、924、926、928等は、通信ネットワーク940を直接的又は間接的に通じて、1又は複数の他のコンピューティングオブジェクト即ちデバイス910、912等及びコンピューティングオブジェクト即ちデバイス920、922、924、926、928等と通信することが可能である。図9において単一の要素として示されているが、ネットワーク940は、図9のシステムにサービスを提供する他のコンピューティングオブジェクト及びコンピューティングデバイスを含むこと、及び/又は、図示されていない多数の相互接続されたネットワークを表すことができる。それぞれのコンピューティングオブジェクト即ちデバイス910、912等又は920、922、924、926、928等はまた、様々な実施態様に従って提供されたようなメモリー管理システムとの通信又はその実装に適した、API、又は他のオブジェクト、ソフトウェア、ファームウェア、及び/又はハードウェアを利用するかもしれないアプリケーション、例えばアプリケーション930、932、934、936、938を収容することも可能である。
[0052] 分散コンピューティング環境をサポートする様々なシステム、コンポーネント、及びネットワーク構成が存在する。例えば、コンピューティングシステムは、有線又は無線システムによって、ローカルネットワーク又は広域分散ネットワークによって、一緒に接続されることが可能である。現在では、多くのネットワークがインターネットに接続されており、インターネットは、広域分散コンピューティングのための基盤を提供し、多くの異なるネットワークを包含している。もっとも、様々な実施態様において説明されたような手法に付随する例示的な通信のために、任意のネットワーク基盤が使用可能である。
[0053] よって、クライアント/サーバー型、ピアツーピア型、又は複合型のアーキテクチャーといったような、ネットワークトポロジー及びネットワーク基盤のホストが利用されることが可能である。クライアント/サーバー型のアーキテクチャー、特にネットワーク接続されたシステムにおいて、クライアントは、通常、別のコンピューター、例えばサーバーによって提供される共有ネットワークリソースにアクセスするコンピューターである。あらゆるコンピューターは状況に応じてクライアント、サーバー、又はその両方とみなされ得るが、図9の具体例では、非限定的な例として、コンピューティングオブジェクト即ちデバイス920、922、924、926、928等は、クライアントとみなされることが可能であり、コンピューティングオブジェクト即ちデバイス910、912等は、サーバーとみなされることが可能である。ここで、コンピューティングオブジェクト即ちデバイス910、912等は、例えば、コンピューティングオブジェクト即ちデバイス920、922、924、926、928等からのデータの受信、データの格納、データの処理、コンピューティングオブジェクト即ちデバイス920、922、924、926、928等へのデータの送信といったようなデータサービスを提供する。これらのコンピューティングデバイスのいずれも、データを処理し、又は任意のプラットフォームからサービス及び1又は複数の実施形態について本明細書に記載のように関連技術のような情報のための基盤を巻き込むことができるサービスまたはタスクを要求してもよい。
[0054] サーバーは、一般に、インターネット又は無線ネットワーク基盤等のリモート又はローカルのネットワークを介してアクセス可能なリモートコンピューターシステムである。クライアントのプロセスが第1のコンピューターシステムにおいて稼動状態にあり、サーバーのプロセスが第2のコンピューターシステムにおいて稼動状態にあることが可能である。それらは、通信媒体を介して相互に通信し、それにより、分散機能を提供し、また、多数のクライアントがサーバーの情報収集能力を活用することを可能にする。ユーザープロファイルに従って利用される任意のソフトウェアオブジェクトは、スタンドアロンで提供され、又は、多数のコンピューティングデバイス若しくはオブジェクトにわたって分散されることが可能である。
[0055] 例えば、通信ネットワーク/バス940がインターネットであるネットワーク環境において、コンピューティングオブジェクト即ちデバイス910、912等は、コンピューティングオブジェクト即ちデバイス920、922、924、926、928等がHTTP等の多くのよく知られたプロトコルのうちの任意によって通信するウェブサーバーであり得る。言及されたように、分散コンピューティング環境に特有なことであるが、コンピューティングオブジェクト即ちデバイス910、912等はまた、コンピューティングオブジェクト即ちデバイス920、922、924、926、928等として機能することも可能であり、その逆も同様である。
<例示的なコンピューティングデバイス>
[0056] 言及されたように、本明細書において説明された様々な実施態様は、保守的ガベージコレクションのアルゴリズムの範囲内でオブジェクトを同時にマーク及びスイープするための基盤を実装することが望ましいであろう任意のデバイスに適合する。したがって、ハンドヘルド型、ポータブル型、及び他のコンピューティングデバイス、並びにあらゆる種類のコンピューティングオブジェクトが、本明細書において、即ち保守的ガベージコレクションのアルゴリズムをタグ付けされた整数によって実装することに関連する何らかの機能をデバイスが提供し得る任意の箇所において説明された、様々な実施態様に関する使用のために企図されるということが理解される。それ故に、図10において後述される以下の汎用リモートコンピューターはほんの一例であり、主題の開示に関する実施態様は、ネットワーク/バスの相互運用性及び対話を有する任意のクライアントによって実現されることができる。
[0057] 必須ではないが、実施態様の何れもが、部分的には、デバイス若しくはオブジェクトのためのサービスの開発者によって使用されるための、及び/又は、使用可能コンポーネントに関連して動作するアプリケーションソフトウェアに含まれる、オペレーティングシステムを介して実現されることが可能である。ソフトウェアは、クライアントワークステーション、サーバー、又は他のデバイスといったような1又は複数のコンピューターによって実行される、プログラムモジュール等のコンピューター実行可能命令の一般的な文脈で説明されることができる。当業者は、様々なコンピューターシステム構成及びプロトコルによってネットワークの対話が実施されることができることを認識するだろう。
[0058] 図10は、したがって、実施態様の1又は複数が実現されることのできる好適なコンピューティングシステム環境1000の一例を示している。しかし、上で明らかとされたように、コンピューティングシステム環境1000は、好適なコンピューティング環境の1つの例に過ぎず、何れの実施態様の利用又は機能の範囲について如何なる限定を示唆することを意図されるものではない。コンピューティング環境1000は、例示的な動作環境1000に示されたコンポーネントのうち任意の1つ又は組み合わせに関して如何なる依存関係又は要件を有しているものと解されてはならない。
[0059] 図10に関して、本明細書における1又は複数の実施態様を実現するための例示的なリモートデバイスは、ハンドヘルド型コンピューター1010の形態の汎用コンピューティングデバイスを含むことが可能である。ハンドヘルド型コンピューター1010のコンポーネントは、限定ではないが、処理装置1020、システムメモリー1030、及び、システムメモリーを含む様々なシステムコンポーネントを処理装置1020に接続するシステムバス1021を含むことができる。
[0060] コンピューター1010は、一般に様々なコンピューター読み取り可能媒体を含み、コンピューター1010によってアクセスされることが可能な任意の利用可能媒体であり得る。システムメモリー1030は、リードオンリーメモリー(ROM)及び/又はランダムアクセスメモリー(RAM)等の揮発性及び/又は不揮発性メモリーの形態のコンピューター記憶媒体を含むことができる。限定ではなく例として、メモリー1030はまた、オペレーティングシステム、アプリケーションプログラム、他のプログラムモジュール、及びプログラムデータを含むこともできる。
[0061] ユーザーは、入力デバイス1040を通じてコンピューター1010にコマンド及び情報を入力することができる。モニター又は他の種類のディスプレイデバイスも、出力インターフェース1050等のインターフェースを介してシステムバス1021に接続される。モニターに加えて、コンピューターは、スピーカー及びプリンター等の他の周辺出力デバイスを含むこともでき、それらは出力インターフェース1050を通じて接続されることができる。
[0062] コンピューター1010は、リモートコンピューター1070等の1又は複数の他のリモートコンピューターへの論理接続を用いて、ネットワーク環境又は分散環境で動作することができる。リモートコンピューター1070は、パーソナルコンピューター、サーバー、ルーター、ネットワークPC、ピアデバイス若しくは他の共通ネットワークノード、又は、任意の他のリモートメディア消費若しくは伝送デバイスとすることができ、コンピューター1010に関連して上述された要素の任意又は全てを含むことができる。図10に示された論理接続は、ローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(WAN)等のネットワーク1071を含むが、他のネットワーク/バスを含むこともできる。そのようなネットワーク環境は、家庭、オフィス、企業規模のコンピューターネットワーク、イントラネット、及びインターネットにおいてありふれたものである。
[0063] 上で言及されたように、様々なコンピューティングデバイス、ネットワーク、及び広告アーキテクチャーに関連して例示的な実施態様が説明されてきたけれども、根底にある概念は、メモリーを管理することが望ましい任意のネットワークシステム及び任意のコンピューティングデバイス又はシステムに適用されることができる。
[0064] 本明細書において説明された実施態様の1又は複数を実現する多数の方法が存在する。例えば、適切なAPI、ツールキット、ドライバーコード、オペレーティングシステム、コントロール、スタンドアロンの又はダウンロード可能なソフトウェアオブジェクト等であり、それらは、アプリケーション及びサービスが任意のプラットフォームからメモリー管理を利用することを可能にする。実施態様は、説明された実施態様の1又は複数によるメモリー管理システムの提供を容易化するソフトウェア又はハードウェアオブジェクトからだけでなく、API(又は他のソフトウェアオブジェクト)の観点からも企図されることができる。本明細書において説明された様々な具体例及び実施態様は、ソフトウェアである側面に加えて、全体的にハードウェアである側面、部分的にハードウェアであり部分的にソフトウェアである側面を有することができる。
[0065] 「例示的」という語は、本明細書において、例、事例、又は実例として利用できることを意味するために用いられている。誤解を避けるために、本明細書において開示された主題は、そのような例によって限定されることはない。加えて、本明細書において「例示的」として記載された任意の側面又は設計は、必ずしも他の側面又は設計に対して好適又は有利であると解されてはならず、また当業者に知られた均等の例示的な構造及び手法を排除することは意図されていない。更に、「含む(include)」、「有する」、「含む(contain)」という用語及び他の類似の語が詳細な説明又は特許請求の範囲のどちらかで用いられる限りにおいて、誤解を避けるために、そのような用語は、付加的な又は他のどのような要素も排除することなく、開放移行語として「備える(comprising)」という用語と同様に包括的であることを意図される。
[0066] 言及されたように、本明細書において説明された様々な手法は、ハードウェア若しくはソフトウェアに関連して、又は、適切な場合には両者の組み合わせに関連して実施されることができる。本明細書において用いられる場合、「コンポーネント」、「システム」等の用語は、同様に、コンピューター関連エンティティー、即ち、ハードウェア、ハードウェアとソフトウェアの組み合わせ、ソフトウェア、又は実行中のソフトウェアの何れをも参照することを意図されている。例えば、コンポーネントは、限定されないが、プロセッサー上で動作しているプロセス、プロセッサー、オブジェクト、実行可能ファイル、実行スレッド、プログラム、及び/又はコンピューターであり得る。実例として、コンピューター上で動作しているアプリケーションと当該コンピューターの両方がコンポーネントであり得る。プロセス及び/又は実行スレッド内に1又は複数のコンポーネントが常駐することができ、また、コンポーネントが1つのコンピューター上にローカルに配置及び/又は2以上のコンピューター間に分散して配置されることができる。
[0067] 前述のシステムは、いくつかのコンポーネント間における相互作用に関連して説明されてきた。そのようなシステム及びコンポーネントは、それらのコンポーネント若しくは指定されたサブコンポーネント、指定されたコンポーネント若しくはサブコンポーネントの一部、及び/又は追加のコンポーネントを含むこと、並びに、それらの様々な順列及び組み合わせに従うことが可能である、ということが理解され得る。サブコンポーネントは、親コンポーネント(階層的)の中に含まれるのではなく、他のコンポーネントに通信可能に接続されたコンポーネントとして実施されることも可能である。加えて、1又は複数のコンポーネントが、集合的機能を提供する単一のコンポーネントに結合され、又はいくつかの独立したサブコンポーネントに分割されることができ、また、統合機能を提供するために任意の1又は複数の中間レイヤー、例えば管理レイヤーが、そのようなサブコンポーネントに通信可能に結合するように提供されることができる、ということが留意される。本明細書において説明された任意のコンポーネントは、本明細書において具体的には説明されていないが当業者によって広く知られている1又は複数の他のコンポーネントと相互作用することもできる。
[0068] 上で説明された例示的なシステムを考慮して、開示された主題に従って実施され得る方法論は、様々な図のフローチャートを参照して理解されることが可能である。説明の簡略化のために方法論は一連のブロックとして示され説明されるが、いくつかのブロックは本明細書において述べられ説明されたものとは異なる順序で、及び/又は他のブロックと同時に行われることができるので、特許請求の範囲に記載された主題は、ブロックの順序によって限定されることはない、ということが理解され認識されなければならない。フローチャートによって非順次的な即ち分岐したフローが示されている場合、同一の又は同様の結果を達成する様々な他の分岐、フロー経路、及びブロック順序が実施されることができる、ということが認識可能である。その上、図示された全てのブロックが以下に説明される方法論を実施するのに必要とされるわけではない。
[0069] いくつかの実施態様において、クライアント側の視点が示されているが、誤解を避けるために、対応するサーバーの視点が存在することが理解されなければならず、その逆も同様である。同様に、方法が実施される場合、記憶装置と1又は複数のコンポーネントによってその方法を実施するように構成された少なくとも1つのプロセッサーとを有した対応デバイスが提供されることが可能である。
[0070] 様々な図の好適な実施態様に関連して様々な実施態様が説明されてきたが、他の類似の実施態様が用いられ得ること、又は、説明された実施態様に対して、当該実施態様から逸脱することなく同一の機能を実施するための変形及び追加がなされ得ることが、理解されなければならない。その上更に、上述された実施態様の1又は複数の側面は、複数の処理チップ若しくはデバイスにおいて又はそれらにわたって実施されることができ、また、記憶装置は、同様に、複数のデバイスにわたって影響を受けることができる。したがって、本発明は、何れの単一の実施態様にも限定されるべきではなく、添付された特許請求の範囲に応じた幅及び範囲で解釈されるべきである。

Claims (15)

  1. スクリプトの実行中にオブジェクトのヒープを生成するステップと、
    前記スクリプトの未実行部分に含まれているスクリプトオブジェクトを前記ヒープ上の対応する1組のメモリー位置まで追跡するステップと、
    前記スクリプトの実行と同時に前記ヒープの少なくとも一部分をマークするステップであって、マークされたヒープは、前記スクリプトの未実行部分によって到達可能である到達可能オブジェクトと、更に、前記スクリプトの未実行部分によって到達不能である到達不能オブジェクトとを含む、ステップと、
    前記到達不能オブジェクトに割り当てられたメモリーを、前記マークに基づいて前記スクリプトの実行と同時に解放するステップと、
    を含む方法。
  2. 前記マークするステップは、前記到達可能オブジェクトをマークするステップを含む、請求項1に記載の方法。
  3. 前記マークするステップは、前記到達不能オブジェクトをマークするステップを含む、請求項1に記載の方法。
  4. 前記解放するステップは、前記到達可能オブジェクトを前記ヒープの最初の記憶位置にそれぞれ保持するステップを含む、請求項1に記載の方法。
  5. 前記保持するステップは、前記ヒープ内の固定された1組の境界線に従ってヒープオブジェクトの区切りを維持するステップを含む、請求項4に記載の方法。
  6. 前記スクリプトを実行するステップを更に含む、請求項1に記載の方法。
  7. 前記実行するステップは、ジャバスクリプトをコンパイルするステップを含む、請求項6に記載の方法。
  8. 前記実行するステップは、文書オブジェクトモデルを変更するステップを含む、請求項6に記載の方法。
  9. コンピューター実行可能コンポーネントが格納されたメモリーと、
    前記メモリーに通信可能に結合され、前記コンピューター実行可能コンポーネントを実行するように構成されたプロセッサーと、を備え、
    前記コンピューター実行可能コンポーネントは、
    スクリプトの実行中にオブジェクトのヒープを生成するように構成されたヒープコンポーネントと、
    前記スクリプトの未実行部分に含まれているスクリプトオブジェクトを前記ヒープ上の対応する1組のメモリー位置まで追跡するように構成された追跡コンポーネントと、
    前記スクリプトの実行と同時に前記ヒープの少なくとも一部分をマークするように構成されたマークコンポーネントであって、マークされたヒープは、前記スクリプトの未実行部分によって到達可能である到達可能オブジェクトと、更に、前記スクリプトの未実行部分によって到達不能である到達不能オブジェクトとを含む、マークコンポーネントと、
    前記マークされたヒープに従って、前記スクリプトの実行と同時に、前記到達不能オブジェクトに割り当てられたメモリーを解放するように構成された再利用コンポーネントと、を備える、
    メモリー管理デバイス。
  10. 前記マークコンポーネントは、前記到達可能オブジェクト又は前記到達不能オブジェクトのうちの1つだけをマークするように構成される、請求項9に記載のメモリー管理デバイス。
  11. 前記再利用コンポーネントは、前記到達不能オブジェクトに割り当てられていた前記メモリーの全体部分の解放に先立って、前記到達不能オブジェクトに割り当てられていた前記メモリーの一部分を再利用するように構成される、請求項9に記載のメモリー管理デバイス。
  12. 前記再利用コンポーネントは、到達可能オブジェクトをヒープの最初の記憶位置にそれぞれ保持するように構成される、請求項9に記載のメモリー管理デバイス。
  13. 前記再利用コンポーネントは、前記ヒープ内の固定された1組の境界線に従ってヒープオブジェクトの区切りを維持するように構成される、請求項12に記載のメモリー管理デバイス。
  14. 前記スクリプトを実行するように構成された実行コンポーネントを更に備える、請求項9に記載のメモリー管理デバイス。
  15. 前記スクリプトの実行に基づいて文書オブジェクトモデルを変更するように構成されたコンポーネントを更に備える、請求項14に記載のメモリー管理デバイス。
JP2014502588A 2011-03-29 2012-03-06 メモリー管理のための同時マーク及び同時スイープによる保守的ガベージコレクション Pending JP2014513342A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/074,226 US8527560B2 (en) 2011-03-29 2011-03-29 Conservative garbage collecting with concurrent marking and concurrent sweeping for memory management
US13/074,226 2011-03-29
PCT/US2012/027795 WO2012134728A2 (en) 2011-03-29 2012-03-06 Conservative garbage collecting with concurrent marking and concurrent sweeping for memory management

Publications (1)

Publication Number Publication Date
JP2014513342A true JP2014513342A (ja) 2014-05-29

Family

ID=46928698

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014502588A Pending JP2014513342A (ja) 2011-03-29 2012-03-06 メモリー管理のための同時マーク及び同時スイープによる保守的ガベージコレクション

Country Status (7)

Country Link
US (1) US8527560B2 (ja)
EP (1) EP2691860B1 (ja)
JP (1) JP2014513342A (ja)
KR (1) KR101961501B1 (ja)
CN (1) CN102736984B (ja)
ES (1) ES2872175T3 (ja)
WO (1) WO2012134728A2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10628306B2 (en) 2017-02-01 2020-04-21 Microsoft Technology Licensing, Llc Garbage collector
US10572181B2 (en) 2017-02-01 2020-02-25 Microsoft Technology Licensing, Llc Multiple stage garbage collector
CN107145451B (zh) * 2017-05-09 2020-09-25 深圳市茁壮网络股份有限公司 一种JavaScript对象存储、回收方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04260948A (ja) * 1991-01-18 1992-09-16 Mitsubishi Electric Corp メモリシステム
JPH09269902A (ja) * 1996-01-31 1997-10-14 Toshiba Corp 情報処理装置の資源管理装置、及び情報処理システムにおける資源管理方法
JP2000339214A (ja) * 1999-05-28 2000-12-08 Nec Corp 実時間メモリ管理システム、及び実時間メモリ管理方法
WO2005001695A1 (ja) * 2003-06-30 2005-01-06 Matsushita Electric Industrial Co., Ltd. ガーベジコレクションシステム
US20100114997A1 (en) * 2008-10-30 2010-05-06 International Business Machines Corporation Allocation cache premarking for snap-shot-at-the-beginning concurrent mark-and-sweep collector

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5088036A (en) * 1989-01-17 1992-02-11 Digital Equipment Corporation Real time, concurrent garbage collection system and method
US5355483A (en) * 1991-07-18 1994-10-11 Next Computers Asynchronous garbage collection
US6289360B1 (en) * 1998-10-07 2001-09-11 International Business Machines Corporation Method and system for eliminating synchronization between sweep and allocate in a concurrent garbage collector
GB9907278D0 (en) * 1999-03-31 1999-05-26 Philips Electronics Nv Memory reclamation method and apparatus
US6622226B1 (en) * 2000-07-31 2003-09-16 Microsoft Corporation Method and system for using a mark-list for garbage collection
US6502111B1 (en) * 2000-07-31 2002-12-31 Microsoft Corporation Method and system for concurrent garbage collection
WO2002023345A1 (en) 2000-09-13 2002-03-21 Geodesic Systems, Incorporated Conservative garbage collectors that can be used with general memory allocators
US7089272B1 (en) * 2003-06-18 2006-08-08 Sun Microsystems, Inc. Specializing write-barriers for objects in a garbage collected heap
US7321908B2 (en) * 2003-07-23 2008-01-22 International Business Machines Corporational Mostly concurrent garbage collection
US7197521B2 (en) * 2003-11-21 2007-03-27 Intel Corporation Method and system performing concurrently mark-sweep garbage collection invoking garbage collection thread to track and mark live objects in heap block using bit vector
US20050198088A1 (en) 2004-03-03 2005-09-08 Sreenivas Subramoney Method and system for improving the concurrency and parallelism of mark-sweep-compact garbage collection
US7636745B1 (en) * 2004-03-12 2009-12-22 Sun Microsystems, Inc. Concurrent-marking-initiation heuristic
US7340494B1 (en) * 2004-03-12 2008-03-04 Sun Microsystems, Inc. Garbage-first garbage collection
US7533228B1 (en) * 2005-05-27 2009-05-12 Sun Microsystems, Inc. Two-pass sliding compaction
US7499961B2 (en) * 2006-01-12 2009-03-03 Sun Microsystems, Inc. Method and apparatus for limiting the size and facilitating maintenance of remembered sets in a space incremental garbage collector
CN101046755B (zh) * 2006-03-28 2011-06-15 郭明南 一种计算机自动内存管理的系统及方法
US7480782B2 (en) * 2006-06-14 2009-01-20 Sun Microsystems, Inc. Reference-updating using per-chunk referenced-address ranges in a compacting garbage collector
WO2008009176A1 (en) * 2006-07-14 2008-01-24 Intel Corporation Heap organization for a multitasking virtual machine
US7840612B2 (en) * 2006-10-23 2010-11-23 Research In Motion Limited Methods and apparatus for concurrently executing a garbage collection process during execution of a primary application program
US7614003B2 (en) * 2006-10-23 2009-11-03 Adobe Systems Incorporated Rendering hypertext markup language content
US7890711B2 (en) * 2007-04-18 2011-02-15 Oracle America, Inc. Methods, apparatus, and program products for improved finalization
US7685182B2 (en) * 2007-05-08 2010-03-23 Microsoft Corporation Interleaved garbage collections
US7685185B2 (en) * 2007-06-29 2010-03-23 Microsoft Corporation Move-in/move-out notification for partial replica synchronization
US8504596B2 (en) * 2007-07-25 2013-08-06 Apple Inc. Extended garbage collection
WO2010033997A2 (en) 2008-09-22 2010-03-25 Fiji Systems, Llc Hybrid fragmenting real time garbage collection

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04260948A (ja) * 1991-01-18 1992-09-16 Mitsubishi Electric Corp メモリシステム
JPH09269902A (ja) * 1996-01-31 1997-10-14 Toshiba Corp 情報処理装置の資源管理装置、及び情報処理システムにおける資源管理方法
JP2000339214A (ja) * 1999-05-28 2000-12-08 Nec Corp 実時間メモリ管理システム、及び実時間メモリ管理方法
WO2005001695A1 (ja) * 2003-06-30 2005-01-06 Matsushita Electric Industrial Co., Ltd. ガーベジコレクションシステム
US20100114997A1 (en) * 2008-10-30 2010-05-06 International Business Machines Corporation Allocation cache premarking for snap-shot-at-the-beginning concurrent mark-and-sweep collector

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
湯浅 太一: "3.実時間ごみ集め", 情報処理, vol. 第35巻 第11号, JPN6016043382, 15 November 1994 (1994-11-15), JP, pages 1006 - 1013, ISSN: 0003438040 *
鈴木 貢: "印付けと回収と純計算を並列に実施するごみ集め", 情報処理学会研究報告, vol. 第94巻 第79号, JPN6016043379, 16 September 1994 (1994-09-16), JP, pages 23 - 30, ISSN: 0003438039 *

Also Published As

Publication number Publication date
CN102736984A (zh) 2012-10-17
WO2012134728A3 (en) 2012-12-06
EP2691860B1 (en) 2021-05-05
KR20140009422A (ko) 2014-01-22
ES2872175T3 (es) 2021-11-02
US8527560B2 (en) 2013-09-03
US20120254265A1 (en) 2012-10-04
CN102736984B (zh) 2017-03-01
WO2012134728A2 (en) 2012-10-04
EP2691860A2 (en) 2014-02-05
KR101961501B1 (ko) 2019-03-22
EP2691860A4 (en) 2015-01-21

Similar Documents

Publication Publication Date Title
US10628398B2 (en) Conservative garbage collecting and tagged integers for memory management
JP5139987B2 (ja) 拡張可能メタデータ
US9342274B2 (en) Dynamic code generation and memory management for component object model data constructs
US20120151433A1 (en) Reverse engineering user interface mockups from working software
US9646020B2 (en) Integrated format conversion during disk upload
CN106681891A (zh) 一种Java应用系统中调整日志级别的方法及装置
CN104423961A (zh) 一种生成测试脚本的方法及系统
CN109033365B (zh) 一种数据处理方法及相关设备
JP2014513342A (ja) メモリー管理のための同時マーク及び同時スイープによる保守的ガベージコレクション
CN111309432B (zh) 一种故障演练方法、装置及系统
US20190391907A1 (en) System and method for automating functional testing
JP5031032B2 (ja) プログラムコード変換に関してプロセスファイルシステムを管理する方法及び装置
JP5525658B2 (ja) 計算機、リソース使用量計算方法及びリソース使用量計算プログラム
US20120005260A1 (en) Method for Optimizing Remote Object Implementations
CN116303810A (zh) 数据处理方法、装置、介质和计算设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150306

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150515

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160210

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160304

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170210

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20170322