JP5452474B2 - ネイティブピア/管理ピアに関するオブジェクト有効期間の管理 - Google Patents

ネイティブピア/管理ピアに関するオブジェクト有効期間の管理 Download PDF

Info

Publication number
JP5452474B2
JP5452474B2 JP2010506370A JP2010506370A JP5452474B2 JP 5452474 B2 JP5452474 B2 JP 5452474B2 JP 2010506370 A JP2010506370 A JP 2010506370A JP 2010506370 A JP2010506370 A JP 2010506370A JP 5452474 B2 JP5452474 B2 JP 5452474B2
Authority
JP
Japan
Prior art keywords
peer
native
objects
managed
management system
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.)
Active
Application number
JP2010506370A
Other languages
English (en)
Other versions
JP2010525490A (ja
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 JP2010525490A publication Critical patent/JP2010525490A/ja
Application granted granted Critical
Publication of JP5452474B2 publication Critical patent/JP5452474B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/0261Garbage collection, i.e. reclamation of unreferenced memory using reference counting
    • 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
    • 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
    • G06F12/0276Generational garbage collection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

本明細書は、一般には、コンピュータシステムでのメモリ管理に関し、より詳細には、自動オブジェクト有効期間管理を容易にするシステムおよび方法に関する。
コンピュータ・サイエンスが発展するにつれて、オブジェクト指向プログラミングは、コンピュータシステム内の機能を実装するのに設計者およびプログラマによって使用される、多くのなじみのあるモデルのうちの1つとなった。オブジェクトモデルは、関数の集合、または単に命令のリストであるプログラムを含む従来のモデルとは対照的に、互いに作用する1つまたは複数のオブジェクトを含むことができる。各オブジェクトは、メッセージを受け取り、データを処理し、他のオブジェクトにメッセージを送ることができ、各オブジェクトを、別個の役割または責任を有する独立したマシンと考えることができる。
オブジェクト指向プログラミングでは、オブジェクトのオブジェクト有効期間(またはライフサイクル)は、オブジェクトの生成(インスタンス化またはコンストラクションとも呼ばれる)とオブジェクトの破棄との間の時間である。オブジェクトを自動的に(管理オブジェクト(managed object)など)または手動で(ネイティブオブジェクトまたは非管理オブジェクト(unmanaged object)など)作成および/または破棄することができる。管理オブジェクトを、データ型(例えばメタデータ)によって記述して、オブジェクトがもはやアクセスされていないときにメモリからオブジェクトを除去するガーベッジコレクタなどの管理環境によって自動的に回収する(例えば再構築する)ことができる。一方、非管理オブジェクトを、標準オペレーティングシステムヒープから割り振ることができ、オブジェクト自体は、オブジェクトに対する参照がもはや存在しないときに、オブジェクトが使用するメモリを解放する任を担う。このことを、例えば参照カウントなどの周知の技法によって実施することができる。
上述のように、管理オブジェクトを管理ヒープから割り振り、自動的にガーベッジコレクションすることができる。このことを達成するために、管理オブジェクトに対する参照をトレースすることができる。オブジェクトに対する最後の参照が除去されたとき、ガーベッジコレクタは、オブジェクトによって占有されたメモリを再構築することができ、管理オブジェクトを参照カウントする必要が緩和される。管理環境は、オブジェクト上に存在する未完結の参照(outstanding reference)を追跡することができるので、トレースは管理コード内で可能である。新しい各オブジェクト参照が管理コード内で宣言されるとき、管理環境は、参照をライブ参照(live reference)のリストに追加することができる。したがって、所与の時刻に、オブジェクト自体ではなく管理環境が、所与のオブジェクト上に存在するライブ参照を認識することができる。参照が範囲外となったとき、または値を変更したとき、ライブ参照のリストを更新することができ、参照が管理コード内にとどまる限り、管理環境は参照をトレースすることができる。
オブジェクトの実装をネイティブ・パートと管理・パート(ピア)にわたって分割することができる。参照カウント技法でネイティブピアの有効期間を制御することができるのに対して、上述のように、ガーベッジコレクタは、管理ピア(managed peer)の有効期間を管理することができる。管理オブジェクト間の参照の一部がネイティブコードを通過するとき、管理オブジェクトがリークする可能性があり、または時期尚早に回収される可能性がある。
複数の管理オブジェクト/ネイティブオブジェクトのペアのシナリオでは、オブジェクトのどちらかに対する参照が存在する限り、そのペアは存続しなければならない。従来の解決策は、オブジェクトを再構築するのに複数のガーベッジコレクションを必要とし、メモリリークしがちであり、オブジェクトに対する外部参照がないとしてもオブジェクトが回収されず、時期尚早な回収をしがちであり、非管理参照が存在する可能性があったとしてもガーベッジコレクタがオブジェクトを再構築する。
以下では、本明細書のいくつかの態様の基本的理解を与えるために、本明細書の単純化した概要を提示する。この概要は、本明細書の包括的な概要ではない。本明細書の主要な要素または不可欠な要素を特定することも、本明細書の範囲を説明することも意図されない。この概要の唯一の目的は、後述される詳細な説明の前置きとして、本明細書のいくつかの概念を単純化した形で提示することである。
本明細書で開示され、特許請求の範囲に記載されるシステムは、その一態様では、オブジェクトの有効期間の管理を容易にする。このシステムは、参照カウントシステムなどのネイティブ側と、ガーベッジコレクションシステムなどの管理側のオブジェクト有効期間管理システム間の遷移を可能にする。ある段階では、このシステムは、参照カウントシステムを使用してオブジェクトのペアの有効期間を制御し、別の段階では、このシステムは、プログラマおよび/またはエンドユーザに対して透過的な方式で、有効期間制御をガーベッジコレクションシステムに引き継ぐ。このシステムは、オブジェクトに対する参照(直接または間接)の解析に基づいて、2つの有効期間管理システム間で動的に切り換えを行うことによってオブジェクトの有効期間を決定することができる。
このシステムの一態様によれば、参照カウント構成要素が、参照カウント技法を使用して、各オブジェクトに対する参照を計算する。参照カウント構成要素は、各ネイティブオブジェクトピアに対する参照の合計数を求め、それに応じて各ネイティブオブジェクトピアに参照カウントを割り当てる。解析構成要素が、ネイティブオブジェクトに対する参照を解析する。さらに解析構成要素は、その解析に基づいてオブジェクトピア間の参照を弱め、かつ/または強めて、メモリリークを回避する。弱参照は、管理オブジェクトに対する参照であり、管理オブジェクトがガーベッジコレクションされるのを防止せず、それによって、管理オブジェクトに対して強参照がない場合に、管理オブジェクトが回収可能となる。さらに、参照が弱められると、解析構成要素は、参照解析に基づいて、管理側に対するイントラネイティブ参照を複製し、時期尚早な回収を防止する。解析構成要素は、参照カウントシステムからガーベッジコレクションシステムへの、およびその逆への有効期間管理の遷移を容易にすることができる。
このシステムのさらに別の態様によれば、外部参照がネイティブ側の複数のオブジェクトのペアの中に存在しないとき、ネイティブピアから管理ピアへの参照が弱められる。サブツリー内の管理ピアに対する参照を弱めることにより、ピアに対する管理参照がドロップ/除去されたときに管理ピアを回収することが可能となる。管理ピアに対する参照が弱められると、このシステムは、管理側に対するネイティブ参照を複製し、時期尚早な回収を回避する。新しい外部(直接的および/または間接的)ネイティブ参照がネイティブピアに対して作成される場合、サブツリー内の管理ピアに対する参照が再び強められる。
このシステムの一態様は、管理ピアとネイティブピアとの間の参照を解放し、かつ/またはSafeHandleのファイナライゼーションを抑制するのに使用される最適化構成要素に関する。通常、SafeHandleは、ネイティブオブジェクトに対する参照を保持する管理オブジェクトである。管理オブジェクトが回収されるとき、管理オブジェクトのガーベッジコレクション中に最終処理を実行するファイナライゼーション機構が使用される。SafeHandleがガーベッジコレクションされるとき、そのファイナライゼーションステップが、ネイティブピアに対するSafeHandleの参照を解放する。本明細書に記載の最適化構成要素は、このシステムのドメイン特有のプロパティを活用して、参照をいつ強め/弱めるかを決定する1組の静的規則を導出する。さらに、このシステムの一態様によれば、管理ピアが状態を持たない場合、最適化構成要素は、管理ピアに対する弱参照を保つ。
このシステムのさらに別の態様は、競合状態を回避するのに使用される、参照に関する保留除去リスト(pending remove list)に関する。管理ピアがガーベッジコレクションされるとき、そのピアに関するSafeHandleがファイナライズされるまで、弱参照オブジェクトに対する参照が保留除去リスト内に保たれる。オブジェクトが回収された後の任意の時点で、オブジェクトをファイナライズすることができる。これにより、ファイナライザが実行される前に、必要ならば管理ピアを再生成する(recreate)ことができる。
以下の説明および添付の図面は、本明細書のいくつかの例示的態様を記述する。しかし、こうした態様は、本明細書の原理を利用することのできる様々な方式の一部を示すに過ぎない。図面と共に考慮するときに、本明細書の以下の詳細な説明から本明細書の他の利点および新規な特徴が明らかとなるであろう。
オブジェクト有効期間管理を容易にする例示的システムのブロック図である。 本明細書の一態様による、オブジェクトが管理側とネイティブ側の間で分割される例示的シナリオを示す図である。 本明細書の一態様による、管理ピアに対する参照が弱められる例示的シナリオを示す図である。 複数のオブジェクトのペアに関する例示的ガーベッジコレクション機構を示す図である。 複数のオブジェクトのペアに関する例示的ガーベッジコレクション機構を示す図である。 複数のオブジェクトのペアに関する例示的ガーベッジコレクション機構を示す図である。 複数のオブジェクトのペアに関する例示的ガーベッジコレクション機構を示す図である。 本明細書の一態様による、複数のオブジェクトの管理ピア間のリンクが存在する、複数のオブジェクトのペアのガーベッジコレクションのための例示的機構を示す図である。 本明細書の一態様による、複数のオブジェクトの管理ピア間のリンクが存在する、複数のオブジェクトのペアのガーベッジコレクションのための例示的機構を示す図である。 システムの一態様による、オブジェクトの時期尚早な回収を回避する例示的機構を示す図である。 システムの一態様による、最適化オブジェクト有効期間管理システムのブロック図である。 本明細書の一態様による、管理ピアおよびネイティブピアに対する参照に関するデータ構造を示す図である。 本明細書の一態様による、管理ピアおよびネイティブピアに対する参照に関するデータ構造を示す図である。 本明細書の一態様による、ファイナライゼーション中の競合状態を回避する、管理ピアおよびネイティブピアに対する参照に関するデータ構造を示す図である。 本明細書の一態様による、オブジェクト有効期間管理を容易にし、メモリリークおよび時期尚早な回収を回避する手順の例示的流れ図である。 本明細書で開示されるアーキテクチャを実行するように動作可能なコンピュータのブロック図である。
これから、同様の要素を参照するのに全体にわたって同様の参照番号が使用される図面を参照しながら、特許請求の範囲に記載される主題を説明する。以下の説明では、説明の都合上、特許請求される主題の完全な理解を与えるために、多数の特定の詳細が記述される。しかし、特許請求の範囲に記載される主題をこうした特定の詳細なしに実施できることは明らかである。別の例では、特許請求の範囲に記載される主題を説明するのを容易にするために、周知の構造およびデバイスがブロック図の形式で示される。
本願では、「構成要素」、「モジュール」、「システム」などの用語は一般に、ハードウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアである、コンピュータ関連の実体を指すものとする。例えば、構成要素は、限定はしないが、プロセッサ上で実行中のプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および/またはコンピュータでよい。例として、コントローラ上で実行中のアプリケーションとコントローラとはどちらも構成要素でよい。1つまたは複数の構成要素が、プロセスおよび/または実行のスレッド内に常駐することができ、構成要素を1つのコンピュータ上に局在化させることができ、かつ/または2つ以上のコンピュータ間で分散させることができる。別の例として、インターフェースは、I/O構成要素、ならびに関連するプロセッサ、アプリケーション、および/またはAPI構成要素を含むことができる。
さらに、標準プログラミングおよび/またはエンジニアリング技法を使用して、特許請求の範囲に記載される主題を方法、装置、または製品として実装し、ソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組合せを生成し、コンピュータが開示される主題を実装するように制御することができる。本明細書では、「製品」という用語は、任意のコンピュータ可読装置、コンピュータ可読搬送波、またはコンピュータ可読媒体からアクセス可能なコンピュータプログラムを包含するものとする。例えば、コンピュータ可読媒体は、限定はしないが、磁気記憶装置(例えば、ハードディスク、フロッピー(登録商標)ディスク、磁気ストライプ...)、光ディスク(例えば、コンパクトディスク(CD)、DVD...)、スマートカード、およびフラッシュメモリ装置(例えば、カード、スティック、キードライブ...)を含むことができる。さらに、搬送波を使用して、電子メールを送信および受信する際に、またはインターネットやローカルエリアネットワーク(LAN)などのネットワークにアクセスする際に使用されるようなコンピュータ可読電子データを搬送することができることを理解されたい。もちろん、特許請求の範囲に記載される主題の範囲または要旨から逸脱することなく、この構成に対して多くの修正を行えることを当業者は理解されよう。
さらに、「例示的」という語は、本明細書では、一例、実例、または例示として働くことを意味するのに使用される。本明細書で「例示的」なものとして説明される任意の態様または設計は、必ずしも他の態様または設計に勝って好ましいもの、または有利なものと解釈されるべきではない。むしろ、例示的という語の使用は、概念を具体的な形で提示するものとする。本願では、「または」という用語は、排他的な「または」ではなく、両立的な「または」を意味するものとする。すなわち、別段の指定がない限り、または文脈から明らかでない限り、「XがAまたはBを使用する」とは、自然な両立的順列(natural inclusive permutation)のいずれかを意味するものとする。すなわち、XがAを使用し、XがBを使用する場合、またはXがAとBのどちらも使用する場合、「XがAまたはBを使用する」は、上記の例のいずれかの下で満たされる。さらに、本願および添付の特許請求の範囲で使用される冠詞「a」および「an」は一般に、別段の指定がない限り、または文脈から単数形を対象とすることが明らかでない限り、「1つまたは複数」を意味するように解釈されるべきである。
本明細書で使用される「回収」、「デストラクション」、「破棄」、「解放」などの用語は一般に、オブジェクトのガーベッジコレクションを指し、オブジェクトによって使用されるリソースを再構築することができる。再構築されるリソースを別のオブジェクトに割り振ることができる。
最初に図面を参照すると、図1は、オブジェクト102の有効期間を制御するオブジェクト有効期間管理システム100を示す。オブジェクト102のライフサイクル(オブジェクト有効期間)は、オブジェクト102がメモリ内でインスタンス化され、オブジェクト102がもはや使用されなくなり、デストラクションまたは解放されるまでの時間である。これは一般には、オブジェクト102がもはや使用されなくなった後に、オブジェクト102をメモリから除去して、他のプログラムまたはオブジェクトがそのオブジェクトの場所を取るための空間を作成することができる場合である。メモリからオブジェクトを除去するために、未使用オブジェクト102に対してデストラクションメソッドを呼び出すことができる。オブジェクト102を破棄することは、オブジェクトに対する任意の参照(図示せず)が無効となることを引き起こす可能性がある。各オブジェクト102は、参照カウント機構およびガーベッジコレクション機構によってその有効期間をそれぞれ制御することができるネイティブピアおよび管理ピア(図示せず)を有することができる。
システム100は通常、各オブジェクトに対する参照を計算するのにほぼ任意の参照カウント技法を使用することのできる参照カウント構成要素104を含むことができる。参照は、オブジェクト102上のオブジェクトピア(図示せず)間の外部参照または内部参照を含むことができる。参照はまた、複数のオブジェクトのペア間の参照をも含むことができる。参照カウント構成要素104は、各オブジェクト102に対する参照の合計数を求めることができ、したがって、参照カウントを各オブジェクト102に割り当てることができる。
解析構成要素106を使用して、オブジェクト102に対する参照を解析することができる。この解析に基づいて、解析構成要素106は、ネイティブピアと管理オブジェクトのピア間の参照を強め、または弱めることができる。さらに、解析構成要素106を使用して、解析に基づいてオブジェクトのピア間の参照を複製することもできる。解析構成要素106は、その解析に基づいて、参照カウントシステムからガーベッジコレクションシステムへの、およびその逆への有効期間管理の遷移を決定することができる。
システム100は、ガーベッジコレクション構成要素108を使用することにより、未使用オブジェクト102を破棄または解放することができる。オブジェクト102が到達可能ではなく、それによってオブジェクト102に対する直接的または間接的な参照が存在しないとき、オブジェクトを回収することができる。オブジェクトがネイティブ側と管理側との間で分割されるシナリオでは、通常、ネイティブピアに対するネイティブ参照がある場合、管理ピアは活動状態のままでなければならず、管理ピアに対する管理参照がある場合、ネイティブピアは活動状態のままでなければならない。したがって、いずれかの側からの参照がある限り、各ピアのどちらもデストラクションされるべきではない。ガーベッジコレクション構成要素108は、参照カウント構成要素104および解析構成要素106によって提供されるオブジェクト102に関する到達可能性情報に基づいて、そのオブジェクト102を破棄すべきであると判定することができる。
図2は、本明細書の一態様によるオブジェクト102を示す。オブジェクト102を2つのピアオブジェクト204、206によって形成することができる。ネイティブピア204は、ネイティブ側208に常駐することができ、ネイティブピア204に対するネイティブ参照210を有することができるのに対して、管理ピア206は、管理側212に常駐することができ、管理参照214を有することができる。ネイティブ参照210が存在する場合、管理ピア206は活動状態のままでなければならず、同様に、管理参照214が存在する場合、ネイティブピア204は活動状態のままでなければならない。したがって、ピア204、206のどちらかに対する外部参照がある場合、ピア204、206はどちらも活動状態のままである必要がある。ネイティブピア204と管理ピア206のどちらも、互いに対する参照216、218を保持することができる。
ガーベッジコレクション機構によって管理ピアの有効期間を制御することができる。ガーベッジコレクションは、オブジェクトの到達可能性に基づいて、将来的にアクセスされることのないプログラム内のオブジェクトを求める。到達可能ではないオブジェクトを自動的にデストラクションすることができ、そのオブジェクトで使用されたリソースを再構築することができる。例えば、デストラクションされたオブジェクトで使用されたメモリを、今度は新しいオブジェクトに割り振ることができる。したがって、どんなルート参照からも管理ピア206が到達可能ではないとき、管理ピア206を破棄し、または解放することができる。さらに、サイクル内の参照を除いて外部参照を有さない管理オブジェクトを回収することができる。例えば、オブジェクトAがオブジェクトBに対する参照を有し、オブジェクトBがオブジェクトAに対する参照を有するが、オブジェクトAとオブジェクトBのどちらに対しても他の参照がない場合、これらのオブジェクトはどちらも回収可能である。
ネイティブ側208で参照カウント機構を使用して、ネイティブピアの有効期間を求めることができる。通常、参照カウントは、ピアに対する参照数に基づいて、各ピアについて求められる。ピアに対する参照が作成されるとき、ピアの参照カウントがインクリメントされ、参照が破棄されるとき、ピアの参照カウントがデクリメントされる。カウントがゼロに達したとき、ピアのメモリが再構築される。したがって、ネイティブピア204がネイティブピア204に対する参照を有さないとき、ネイティブピア204を再構築することができる。
2つの有効期間管理機構を動的に調整して、ユーザにとって不可視の方式でオブジェクト102の有効期間を管理することができ、それによってメモリリークおよび/または時期尚早なデストラクションが回避される。メモリリークは、ネイティブ参照210と管理参照214がどちらも消滅し、オブジェクトが回収/デストラクションされないときに生じる。ネイティブ参照210と管理参照214はどちらも、互いに対する参照216、218を保持するからである。
次に図3を参照すると、ネイティブピア204および管理ピア206を含むオブジェクト102がどちらのピアに対しても外部参照を有さない例示的シナリオが示されている。ネイティブピア204は、ネイティブ側208に常駐することができるのに対して、管理ピア206は、管理側212に常駐することができ、ネイティブ参照または管理参照がオブジェクト102に対して行われない。
管理ピア206が、他の管理オブジェクトからも、そのネイティブピアからも、管理ピア206に対するどんな参照も有さない場合、管理ピア206を自動的にデストラクションすることができる。しかし、管理ピア206がそれに関する状態を有さず、管理ピア206に対する唯一の参照がネイティブピアからのものだけである場合、同一のネイティブピア204について、後で管理ピア206をデストラクションし、再生成することができる。すなわち、管理コードがネイティブオブジェクトに対する管理参照を必要とする場合、ネイティブオブジェクトについて、新しい管理ピアを望み通りに作成することができる。管理ピアのデストラクションおよび再生成は、管理ピアが管理ピアに関する状態を有さない場合にのみ可能である。例えば、計算の結果がプライベート変数によって参照される管理オブジェクト上に格納され、次いで管理オブジェクトがデストラクションされた場合、管理オブジェクトが再生成された場合に計算の結果が失われ、エラーが引き起こされることになる。管理オブジェクトがアプリケーション状態を含まない場合、管理オブジェクトをデストラクションすることができる。このことは、システムが管理ピアを常に再生成することができるので可能である。このことは、ステートレスオブジェクトについても当てはめることができるが、ステートフルオブジェクトについては機能しない。
図3に戻ると、ネイティブピア204は、管理ピア206に対する弱参照302を保持することができる。弱参照は、システムが、オブジェクトをデストラクションさせないようにすることなくオブジェクトを参照することを可能にすることができる。ガーベッジコレクタが弱く到達可能なオブジェクト(weakly reachable object)を回収する場合、弱参照を通じてそのオブジェクトにもはやアクセスすることができなくなるように、弱く到達可能なオブジェクトに対する弱参照をヌルに設定することができる。
管理ピア206に対する弱参照302を保持することにより、管理コードにオブジェクト識別子を提供することができる。例えば、ユーザコードが管理ピア206に対する参照を保持している場合、弱参照は、ユーザコードが再びオブジェクトを求めるときに、管理ピア206に対する同一の参照がユーザコードに提供されることを保証することができる。しかし、弱参照は、管理ピア206に対する他の管理参照が存在しないときに、管理ピア206を回収することを可能にすることができる。
管理ピア206が管理ピア206に関する管理状態を有する場合、ネイティブピア204上の参照カウントが1となり、それによってネイティブピア204に対する唯一の参照が符号218となるとき、管理ピア206に対する参照302が弱められる。そのような場合、管理ピア206は、管理ピア206に対する管理参照がある間にのみ、活動状態にとどまることができる。最後の管理参照が除去されたとき、管理オブジェクトが回収され、ファイナライザが、ネイティブピア204に対する最終解放を実施することができる。しかし、オブジェクトのペアを回収するこの機構は、複数のオブジェクトのペアのために複数のガーベッジコレクションを必要とし、その結果、メモリリークが生じる可能性がある。
図4A〜Dは、複数のオブジェクトのペアに関する例示的デストラクション機構を示す。図4Aを参照すると、2つのオブジェクトのペア(符号402および404、406および408)が、ネイティブ側208のそれらの間の参照410と、ルートに対するネイティブ参照412と共に示されている。一例を挙げると、複数のオブジェクトは、内部のCanvasおよびButtonを表す。機構はCanvasやButtonなどの2つのオブジェクトに限定されず、任意の複数のオブジェクトのペアに対して適用できることを理解されたい。
図4Bは、ルート、例えばCCanvas402に対するネイティブ参照412(図4A)が除去されるシナリオを示す。オブジェクト402に対する外部参照が存在しないので、CCanvas402は、MyCanvas404に対するCCanvas402の参照414を弱めることができる。CCanvas402からMyCanvas404への参照が弱められると、他の参照を有さないので、MyCanvas404をデストラクションすることができる。
CCanvas402からの参照410と、CControl406の管理ピア408からの別の参照418のために、CControl406に関する参照カウント(REF)は2である。したがって、CControlは、Button408に対する強参照416を依然として保持することができる。さらに、Button408は、Button408に対する強参照416を有するので、Button408はデストラクションされない。
管理ピアMyCanvas404は、管理ピアMyCanvas404に対する単一の弱参照414を有し、管理ピアMyCanvas404をデストラクションすることができる。MyCanvas404がデストラクションされたとき、図4Cに示されるように、MyCanvasのためのファイナライザ(図示せず)が、ネイティブピア402に関する最終解放を実施することができる。
図4Cを参照すると、オブジェクトのペア402〜404をデストラクションすることができ、CCanvas402からCControl406への参照410を除去することができる。したがって、CControlは、CControlの管理ピア408から唯一の参照418を有するので、CControlの参照カウントは1でよい。上記で論じたように、ネイティブピアが外部参照を有さないとき、ネイティブピアは、ネイティブピアの管理ピアに対する参照を弱めることができる。したがって、Button408に対する参照416が弱められる。
次に図4Dを参照すると、管理ピアButton408が、単一の弱参照416と共に示されている。このとき、Button408をデストラクションすることができる。Button408がデストラクションされたとき、CControl406に関する最終解放を実施することができる。図4A〜Dからわかるように、複数のガーベッジコレクションに複数のペアのオブジェクトをデストラクションするように要求することができ、オブジェクトのペアのツリーに関するガーベッジコレクション数は、ツリーの深さに依存する。
図5A〜Bは、複数のオブジェクトの管理ピア間のリンクが存在する、複数のオブジェクトのガーベッジコレクションに関する例示的機構を示す。前に論じたCanvasおよびButtonの例を続けると、参照502が、管理側212でButton408からMyCanvas404に対して存在する。外部参照は存在しないので、ネイティブピアCCanvas402の参照カウントは1でよく、それに応じて参照414を弱めることができる。管理ピアMyCanvas404は弱参照414を有するが、Button408からの強参照502をも有する。CControl406からButton408に対して存在するルート参照416と、Button408からMyCanvas404に対する参照502のために、MyCanvas404はルートから到達可能であり、したがってMyCanvas404をガーベッジコレクションすることができない。各ピア(符号402、404、406、408)の参照カウントは1より大きく、したがって、オブジェクト対に対して外部参照が存在しないとしても、ピアのいずれもガーベッジコレクションすることができず、結果としてメモリリークが生じる。
図5Bは、図5Aに関して説明したメモリリーク状態を回避する機構を示す。ネイティブルートに対する最後の外部参照に関して、ツリー内のオブジェクトの有効期間は、管理参照に依存する。したがって、サブツリー内の管理ピアに対するすべての参照を弱め、メモリリークを回避することができる。
図5Bからわかるように、外部参照(直接的および/または間接的)は、ネイティブオブジェクトピア402、406のいずれに対しても存在しない。したがって、各管理ピアに対する参照414、416を弱めることができる。参照416を弱めることにより、Button408に関する参照カウントはゼロにまで減少することができ、そのときButton408をガーベッジコレクションすることができる。Button408がガーベッジコレクションされるとき、参照502を除去することができ、したがって、そのときMyCanvasを回収することができる。
図6は、上述の例に対する参照を伴う、オブジェクトの時期尚早な回収を回避する機構を示す。ネイティブ側208から管理側212にネイティブ参照410を複製することができる。参照の複製は、管理ピアの時期尚早な回収を回避する。複製された参照602がない場合、管理ピアであるMyCanvas404上の管理参照(図示せず)は、Button408が回収されることを防止することができない。
ネイティブ側208に対する外部参照がないので、参照414および416を弱めることができる。さらに、管理ピアであるButton408はこのとき、MyCanvas404からの複製参照602を有することができる。したがって、管理参照(図示せず)が管理側212に存在しない場合、Button408はそのとき到達可能であるので、Button408の時期尚早な回収を回避することができる。新しい外部ネイティブ参照がCCanvas402に対して行われる場合、参照414および416を再び強めることができる。
次に図7を参照すると、最適化構成要素702を含むオブジェクト有効期間管理システムが示されている。最適化構成要素702を使用して、管理ピアとネイティブピアとの間の参照を解放することができ、かつ/またはSafeHandleがファイナライズするのを抑制することができる。通常、SafeHandleを使用して、ハンドルリソース(handle resource)の不可欠なファイナライゼーションを実現することができ、ハンドルがガーベッジコレクションによって時期尚早に再構築されるのを回避することができる。
到達不能な管理オブジェクトがデストラクションされるとき、ファイナライゼーション機構を使用して、管理オブジェクトのガーベッジコレクション中に最終処理を実施することができる。SafeHandleのガーベッジコレクションの間、ファイナライゼーションステップは、ネイティブピアに対するその参照を解放する。最適化構成要素702は、システムのドメイン特有のプロパティを活用して、参照をいつ強め/弱めるかを決定する1組の静的規則を導出する。さらに、システムの一態様によれば、管理ピアが状態を担持しない場合、最適化構成要素702は、管理ピアに対する弱参照を保つ。
図8A〜Bは、本明細書の一態様による、参照に関するデータ構造を示す。まず図8Aを参照すると、上述のようにネイティブオブジェクト(またはピア)802がその管理ピア804に対する弱参照を保持することのできるデータ構造が示されている。そのような場合、管理ピアテーブル(MPT:managed peer table)806は、管理ピア804を直接的に参照するのではなく、Weak Referenceオブジェクト808を参照する。さらに、SafeHandle810は、ネイティブオブジェクト802に対する参照カウント参照(reference counted reference)を有することができる。
ガーベッジコレクションが行われる場合、管理ピア804を回収することができ、ファイナライザスレッドは、SafeHandle810をファイナライズすることができ、SafeHandle810は、ネイティブオブジェクト802を解放する。MPT806に対してロックを行うことができ、オブジェクトのエントリを除去することができる。
次に図8Bを参照すると、ネイティブオブジェクト(またはピア)802がその管理ピア804に対する強参照を保持することのできるデータ構造が示されている。MPT806は、管理ピア804を直接的に参照する。さらに、SafeHandle810は、ネイティブオブジェクト802に対する参照を有することができる。ガーベッジコレクションの間、管理ピア804を回収することができ、ファイナライザスレッドは、SafeHandle810をファイナライズすることができ、SafeHandle810は、ネイティブオブジェクト802を解放する。さらに、MPT806に対してロックを行うことができ、オブジェクトのエントリを除去することができる。
図9は、競合状態を回避する、保留除去リスト(pending remove list)902を含む参照に関するデータ構造を示す。競合状態は、弱参照が管理ピアに対して保たれるときに生じる可能性があり、前のものをファイナライズする前に管理ピアが再生成される可能性がある。この状態を防止するために、SafeHandleがファイナライズされるまで、弱参照に対する参照が第2のテーブル内に保たれる。
管理ピアがガーベッジコレクションされるとき、SafeHandle810がファイナライズされるまで、Weak Reference808に対する参照904を保留除去リスト902内に保つことができる。SafeHandle810がファイナライズされる前に管理ピア906が再生成される場合、MPT806からの参照は、SafeHandle810のファイナライゼーション時には除去されない。ファイナライザスレッドがSafeHandle810をファイナライズするとき、保留除去リスト902内の参照904を除去することができる。したがって、競合状態を回避することができる。
次に図10を参照すると、メモリリークおよび/または時期尚早な回収が防止されるようにオブジェクトの有効期間を管理する方法1000が示されている。この方法を適用して、1つまたは複数のオブジェクトのペアのガーベッジコレクションを管理することができる。説明を簡単にするために、例えばフローチャートの形式の、本明細書に示される1つまたは複数の方法が、一連の動作として図示および説明されるが、本明細書によれば、いくつかの動作は、異なる順序で行うことができ、かつ/または本明細書に図示および説明されるのとは別の動作と同時に行うことができるので、本明細書は動作の順序によって限定されないことを理解されたい。例えば、別法として、状態図などで、一連の相互に関係する状態またはイベントとしてこの方法を表現できることを当業者は理解されよう。さらに、本明細書による方法を実施するのに、図示されるすべての動作が必要であるわけではないことがある。
方法1000は、符号1002で、1つまたは複数のオブジェクトのペアに対する外部参照を解析することを含む。判定ボックス1004で示されるように、外部参照がネイティブ側に存在するかどうかを判定することができる。ネイティブピアに対する外部参照がない場合、符号1006で、その管理ピアに対する参照を弱めることができる。管理側に対する参照を弱めることにより、メモリリークを回避することができる。さらに、符号1008で、管理側に対してネイティブピア間の内部参照を複製することができ、それによって管理ピアは、ネイティブピア間の強参照を保持する。管理側に対する参照の複製は、オブジェクトの時期尚早な回収を防止する。さらに、外部参照がネイティブ側に存在すると判定された場合、符号1010で示されるように、ネイティブピアから管理ピアに対する参照を強めることができる。
次に図11を参照すると、本明細書で開示されるアーキテクチャを実行するように動作可能なコンピュータのブロック図が示されている。本明細書の様々な態様について追加の状況を与えるために、図11および以下の議論は、本明細書の様々な態様を実装することのできる適切なコンピューティング環境1100の簡潔で一般的な説明を与えることが意図される。上記では、1つまたは複数のコンピュータ上で実行することのできるコンピュータ実行可能命令の一般的状況で本明細書が説明されたが、本明細書を、他のプログラムモジュールと組み合わせて、かつ/またはハードウェアとソフトウェアの組合せとして実装することもできることを当業者は理解されよう。
一般に、プログラムモジュールは、特定のタスクを実行し、または特定の抽象データ型を実装するルーチン、プログラム、コンポーネント、データ構造などを含む。さらに、1つまたは複数の関連するデバイスにそれぞれ動作可能に結合することのできる、シングルプロセッサまたはマルチプロセッサコンピュータシステム、ミニコンピュータ、メインフレームコンピュータ、ならびにパーソナルコンピュータ、ハンドヘルドコンピューティングデバイス、マイクロプロセッサベースの、またはプログラム可能なコンシューマエレクトロニクスなどを含む他のコンピュータシステム構成で本発明の方法を実施できることを当業者は理解されよう。
本明細書の図示される態様を、通信ネットワークを介してリンクされるリモート処理デバイスによって一定のタスクが実行される分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールをローカル記憶装置とリモートメモリ記憶装置のどちらにも配置することができる。
コンピュータは通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータでアクセスすることのできる入手可能などんな媒体でもよく、揮発性媒体と不揮発性媒体の両方、取外し可能媒体と取外し不能媒体の両方を含む。例えば、限定はしないが、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を格納する任意の方法または技術で実装された、揮発性媒体および不揮発性媒体、ならびに取外し可能媒体および取外し不能媒体を含む。コンピュータ記憶媒体は、限定はしないが、RAM、ROM、EEPROM、フラッシュメモリ、または他のメモリ技術、CD−ROM、DVD、または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気記憶装置、あるいは所望の情報を格納するのに使用することができ、コンピュータでアクセスすることのできる他の任意の媒体を含む。
通信媒体は通常、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを、搬送波や他のトランスポート機構などの被変調データ信号で具体化し、通信媒体は任意の情報伝送媒体を含む。「被変調データ信号」という用語は、その特徴のうちの1つまたは複数が、信号内に情報を符号化するように設定または変更される信号を意味する。例えば、限定はしないが、通信媒体は、有線ネットワークやダイレクトワイヤード接続などの有線媒体と、音響、RF、赤外線、他のワイヤレス媒体などのワイヤレス媒体とを含む。上記の任意の組合せもコンピュータ可読媒体の範囲内に含まれる。
図11を再び参照すると、本明細書の様々な態様を実装する例示的環境1100はコンピュータ1102を含み、コンピュータ1102は、処理装置1104、システムメモリ1106、およびシステムバス1108を含む。システムバス1108は、処理装置1104に、限定はしないがシステムメモリ1106を含むシステム構成要素を結合する。処理装置1104は、様々な市販のプロセッサのいずれでもよい。デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャも処理装置1104として使用することができる。
システムバス1108は、様々な市販のバスアーキテクチャのいずれかを使用する(メモリコントローラを備え、または備えない)メモリバス、周辺バス、およびローカルバスにさらに相互接続することのできるいくつかのタイプのバス構造のいずれでもよい。システムメモリ1106は、読取り専用メモリ(ROM)1110およびランダムアクセスメモリ(RAM)1112を含む。基本入出力システム(BIOS)が、ROM、EPROM、EEPROMなどの不揮発性メモリ1110内に格納され、BIOSは、起動時などにコンピュータ1102内の要素間で情報を転送する助けとなる基本ルーチンを含む。RAM1112はまた、データをキャッシュするスタティックRAMなどの高速RAMをも含むことができる。
コンピュータ1102は、内部ハードディスクドライブ(HDD)1114(例えば、EIDE、SATA)と、(例えば、取外し可能ディスケット1118に対して読み書きするための)磁気フロッピーディスクドライブ(FDD)1116と、(例えば、CD−ROMディスク1122を読み取り、あるいはDVDなどの他の大容量光学媒体に対して読み書きするための)光ディスクドライブ1120をさらに含み、内部ハードディスクドライブ1114を、外部の適切なシャーシ(図示せず)内で使用するように構成することもできる。ハードディスクドライブ1114、磁気ディスクドライブ1116、および光ディスクドライブ1120を、それぞれハードディスクドライブインターフェース1124、磁気ディスクドライブインターフェース1126、および光学ドライブインターフェース1128によってシステムバス1108に接続することができる。外部ドライブ実装のためのインターフェース1124は、ユニバーサルシリアルバス(USB)技術とIEEE1394インターフェース技術の少なくとも一方または両方を含む。他の外部ドライブ接続技術は、本明細書の企図内にある。
ドライブおよびその関連するコンピュータ可読媒体は、データ、データ構造、コンピュータ実行可能命令などの不揮発性ストレージを実現する。コンピュータ1102について、ドライブおよび媒体は、適切なデジタルフォーマットでの任意のデータのストレージに対処する。上記のコンピュータ可読媒体の説明は、HDDと、取外し可能磁気ディスケットと、CDやDVDなどの取外し可能光学媒体を参照するが、zipドライブ、磁気カセット、フラッシュメモリカード、カートリッジなどの、コンピュータで読取り可能な他のタイプの媒体も例示的動作環境で使用することができ、さらに、そのような任意の媒体は、本明細書の方法を実施するコンピュータ実行可能命令を含むことができることを当業者は理解されたい。
オペレーティングシステム1130、1つまたは複数のアプリケーションプログラム1132、他のプログラムモジュール1134、およびプログラムデータ1136を含むいくつかのプログラムモジュールをドライブおよびRAM1112内に格納することができる。オペレーティングシステム、アプリケーション、モジュール、および/またはデータのうちのすべてまたは一部をRAM1112内にキャッシュすることもできる。本明細書を、様々な市販のオペレーティングシステムまたはオペレーティングシステムの組合せと共に実装できることを理解されたい。
ユーザは、1つまたは複数の有線/ワイヤレス入力装置、例えばキーボード1138、およびマウス1140などのポインティングデバイスを介してコンピュータ1102にコマンドおよび情報を入力することができる。他の入力装置(図示せず)は、マイクロフォン、IRリモートコントロール、ジョイスティック、ゲームパッド、スタイラスペン、タッチスクリーン等を含むことができる。上記および他の入力装置はしばしば、システムバス1108に結合される入力装置インターフェース1142を介して処理装置1104に接続されるが、パラレルポート、IEEE1394シリアルポート、ゲームポート、USBポート、IRインターフェース等の他のインターフェースで接続することもできる。
モニタ1144または他のタイプのディスプレイ装置も、ビデオアダプタ1146などのインターフェースを介してシステムバス1108に接続される。モニタ1144に加えて、コンピュータは通常、スピーカ、プリンタなどの他の周辺出力装置(図示せず)を含む。
コンピュータ1102は、リモートコンピュータ1148などの1つまたは複数のリモートコンピュータに対する有線通信および/またはワイヤレス通信を介する論理接続を使用して、ネットワーク環境で動作することができる。リモートコンピュータ1148は、ワークステーション、サーバーコンピュータ、ルータ、パーソナルコンピュータ、ポータブルコンピュータ、マイクロプロセッサベースのエンターテイメントアプライアンス、ピアデバイス、または他の共通ネットワークノードでよく、通常はコンピュータ1102に関して説明した要素のうちの多くまたはすべてを含むが、図を簡潔にするために、メモリ/記憶装置1150のみが示されている。図示される論理接続は、ローカルエリアネットワーク(LAN)1152および/またはより大規模なネットワーク、例えば広域ネットワーク(WAN)1154に対する有線/ワイヤレス接続性を含む。そのようなLANおよびWANネットワーキング環境は、オフィスおよび会社で一般的なものであり、イントラネットなどの企業全体のコンピュータネットワークを容易にし、それらのすべては、グローバル通信ネットワーク、例えばインターネットに接続することができる。
LANネットワーキング環境で使用されるとき、コンピュータ1102は、有線および/またはワイヤレス通信ネットワークインターフェースまたはアダプタ1156を介してローカルネットワーク1152に接続される。アダプタ1156は、LAN1152に対する有線通信またはワイヤレス通信を容易にすることができ、LAN1152はまた、ワイヤレスアダプタ1156と通信するためにLAN1152上に配置されたワイヤレスアクセスポイントをも含むことができる。
WANネットワーキング環境で使用されるとき、コンピュータ1102は、モデム1158を含むことができ、またはWAN1154上の通信サーバーに接続され、またはインターネットなどによってWAN1154を介して通信を確立する他の手段を有する。モデム1158は内蔵または外付けの有線装置またはワイヤレス装置でよく、シリアルポートインターフェース1142を介してシステムバス1108に接続される。ネットワーク環境では、コンピュータ1102に関して示されるプログラムモジュールまたはその一部を、リモートメモリ/記憶装置1150内に格納することができる。図示されるネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立する他の手段を使用できることを理解されよう。
コンピュータ1102は、ワイヤレス通信に動作可能に配置された任意のワイヤレス装置またはエンティティ、例えばプリンタ、スキャナ、デスクトップおよび/またはポータブルコンピュータ、PDA、通信衛星、ワイヤレス検出可能タグに関連する任意の装置または場所(例えば、キオスク、ニューススタンド、化粧室)、および電話と通信するように動作可能である。これは、少なくともWi−FiおよびBluetooth(登録商標)ワイヤレス技術を含む。したがって、通信は、従来型ネットワークの場合と同じく、所定の構造でよく、または単に、少なくとも2つの装置間のアドホック通信でよい。
Wi−FiすなわちWireless Fidelityは、ワイヤなしに自宅、ホテルの部屋内のベッド、または職場の会議室からインターネットへの接続を可能にする。Wi−Fiは、そのような装置、例えばコンピュータが基地局の範囲内の任意の場所の屋内および屋外でデータを送受信することを可能にする、携帯電話で使用されるのと同様のワイヤレス技術である。Wi−Fiネットワークは、IEEE802.11(a、b、gなど)と呼ばれる無線技術を使用して、セキュアで、信頼性が高く、高速なワイヤレス接続性を実現する。Wi−Fiネットワークを使用して、コンピュータを互いに、インターネットに対して、および(IEEE802.3またはイーサネット(登録商標)を使用する)有線ネットワークに対して接続することができる。Wi−Fiネットワークは、アンライセンスの2.4GHzおよび5GHz無線帯域で、例えば11Mbps(802.11a)または54Mbps(802.11b)のデータ転送速度で動作し、または両方の帯域(デュアルバンド)を含む製品と共に動作し、したがって、ネットワークは、多くのオフィスで使用される10BaseT有線イーサネット・ネットワークと同様の現実世界性能を実現することができる。
上記で説明したものは、本明細書の例を含む。もちろん、本明細書を説明するために、構成要素または方法の想像できるあらゆる組合せを説明することは不可能であるが、本明細書の多数の別の組合せおよび置換が可能であることを当業者は理解することができる。したがって、本明細書は、特許請求の範囲の要旨および範囲に包含されるすべての変更、修正、および変形を含むものとする。さらに、「includes」という用語が詳細な説明または特許請求の範囲で使用される範囲で、こうした用語は、「comprising」という用語と同様に、包含的なものであるものとする。「comprising」は、使用されるときに、請求項では移行語として解釈されるからである。

Claims (19)

  1. オブジェクト有効期間管理システムであって、
    1つまたは複数のオブジェクトに関する参照カウントを決定するように構成される参照カウント構成要素と、
    前記参照カウントの解析に基づいて、前記1つまたは複数のオブジェクトの有効期間を制御するために、ネイティブオブジェクト有効期間管理システムと管理オブジェクト有効期間管理システムと動的に切り替えるように構成される解析構成要素であって、前記ネイティブオブジェクト有効期間管理システムは、前記1つまたは複数のオブジェクトのネイティブオブジェクトピアによって使用されるメモリを、前記ネイティブオブジェクトピアが前記メモリを解放後に再構築することを可能にし、前記管理オブジェクト有効期間管理システムは、ガーベッジコレクション構成要素を使用して前記1つまたは複数のオブジェクトの管理オブジェクトピアのデストラクションを可能にする、解析構成要素と、
    前記管理オブジェクトピアによって使用されるリソースを再構築するように構成されるガーベッジコレクション構成要素であって、前記ガーベッジコレクション構成要素は、前記参照カウント構成要素および前記解析構成要素によって与えられる、前記1つまたは複数のオブジェクトに関する到達可能性情報に基づいて将来的にアクセスされないオブジェクトを識別することによって前記識別されたオブジェクトをデストラクションし、前記リソースを再構築するように構成される、ガーベッジコレクション構成要素と、
    前記ネイティブオブジェクトピアに対する参照を有する前記管理オブジェクトピア上に弱参照に対する参照を含み、および前記管理オブジェクトピアがファイナライズされるまで前記弱参照に対する参照を維持することによって前記管理オブジェクトピアのファイナライゼーション中の競合状態を回避する保留リストを格納するように構成されるストレージであって、前記ファイナライゼーションは、前記ネイティブオブジェクトピア上の前記管理オブジェクトピアの参照を解放する、ストレージと
    を備えることを特徴とするオブジェクト有効期間管理システム。
  2. 前記解析構成要素は、前記ネイティブオブジェクトピアに対する外部参照を解析するように構成されることを特徴とする請求項1に記載のシステム。
  3. 前記ネイティブオブジェクトピアに対する外部参照が存在しないとき、前記解析構成要素は、前記ネイティブオブジェクトピアから管理オブジェクトピアに対する参照を弱めるように構成され、前記外部参照の少なくとも一つは、直接的参照または間接的参照の少なくとも一方であることを特徴とする請求項2に記載のシステム。
  4. 直接的参照または間接的参照の少なくとも一方が前記ネイティブオブジェクトピアに対して行われるとき、前記解析構成要素は、前記ネイティブオブジェクトピアから管理オブジェクトピアに対する参照を強めるように構成され、前記直接的参照および前記間接的参照は、外部参照であることを特徴とする請求項2に記載のシステム。
  5. 前記解析構成要素は、複数のネイティブオブジェクトピア間の参照を管理オブジェクトピア側に複製するように構成されることを特徴とする請求項3に記載のシステム。
  6. オブジェクトシステムのシャットダウン中に管理オブジェクトピアとネイティブオブジェクトピアとの間の参照を解放するように構成される最適化構成要素をさらに備えることを特徴とする請求項1に記載のシステム。
  7. オブジェクトシステムのシャットダウン中に前記ネイティブオブジェクトピアに対する参照を保持する少なくとも1つの管理オブジェクトピアのファイナライゼーションを行わないように構成される最適化構成要素をさらに備えることを特徴とする請求項1に記載のシステム。
  8. コンピュータ実行可能命令を格納するコンピュータ読み取り可能な記憶媒体であって、
    前記コンピュータ実行可能命令は、プロセッサによって実行されると、前記プロセッサに、
    1つまたは複数のオブジェクトに対する参照を解析するステップと、
    前記解析に基づいて、前記1つまたは複数のオブジェクトの有効期間を制御するために、ネイティブオブジェクト有効期間管理システムと管理オブジェクト有効期間管理システムと動的に切り替えるステップであって、前記ネイティブオブジェクト有効期間管理システムは、ネイティブオブジェクトによって使用されるメモリを、前記ネイティブオブジェクトが前記メモリを解放後に再構築することを可能にし、前記管理オブジェクト有効期間管理システムは、管理オブジェクトピアのデストラクションを可能にする、ステップと、
    前記ネイティブオブジェクトに対する参照を有する前記管理オブジェクトピア上に弱参照に対する参照を含み、および前記管理オブジェクトピアがファイナライズされるまで前記弱参照に対する参照を維持することによって前記管理オブジェクトピアのファイナライゼーション中の競合状態を回避する保留リストを格納するステップであって、前記ファイナライゼーションは、前記ネイティブオブジェクト上の前記管理オブジェクトピアの参照を解放する、ステップと、
    ネイティブオブジェクト有効期間管理システムおよび管理オブジェクト有効期間管理システムによって提供される、前記1つまたは複数のオブジェクトに関する到達可能性情報に基づいて将来的にアクセスされない未使用オブジェクトを識別することによって前記識別された未使用オブジェクトをデストラクションするステップと
    を備える方法を実行させることを特徴とするコンピュータ読み取り可能な記憶媒体。
  9. 前記1つまたは複数のオブジェクトに対する直接的参照または間接的参照の少なくとも一方を決定するステップであって、前記直接的参照および前記間接的参照は、外部参照である、ステップをさらに備えることを特徴とする請求項8に記載のコンピュータ読み取り可能な記憶媒体。
  10. 前記解析に基づいて、参照を強めること、または参照を複製することのうちの少なくとも1つを行うステップをさらに備えることを特徴とする請求項9に記載のコンピュータ読み取り可能な記憶媒体。
  11. 前記1つまたは複数のオブジェクトの前記ネイティブオブジェクトから管理オブジェクトピアに対する少なくとも1つの参照を弱めるステップであって、前記少なくとも1つの参照を弱めることは、前記ネイティブオブジェクトに対する前記外部参照の解析に基づく、ステップをさらに備えることを特徴とする請求項9に記載のコンピュータ読み取り可能な記憶媒体。
  12. 前記解析は、ネイティブオブジェクトに対する外部参照の解析であり、参照を複製することは、ネイティブオブジェクト間の参照を管理オブジェクト側に複製することを備えることを特徴とする請求項10に記載のコンピュータ読み取り可能な記憶媒体。
  13. オブジェクトシステムシャットダウン中に前記1つまたは複数のオブジェクトの管理オブジェクトピアとネイティブオブジェクトとの間の参照を解放するステップをさらに備えることを特徴とする請求項8に記載のコンピュータ読み取り可能な記憶媒体。
  14. オブジェクトシステムシャットダウン中に、前記ネイティブオブジェクトに対する参照を保持する前記管理オブジェクトピアのファイナライゼーションを行わないステップをさらに備えることを特徴とする請求項8に記載のコンピュータ読み取り可能な記憶媒体。
  15. 1つまたは複数のオブジェクトの有効期間を制御するために、ネイティブオブジェクト有効期間管理システムと管理オブジェクト有効期間管理システムと動的に切り替えるコンピュータ実行方法であって、前記動的な切り替えは、管理オブジェクトピアのメモリリークまたは時期尚早なデストラクションのうちの少なくとも一方を防止し、前記方法は、
    1つまたは複数のネイティブオブジェクトピアに対する参照を解析するステップと、
    前記解析に基づいて、前記1つまたは複数のネイティブオブジェクトピアの有効期間を制御するために、ネイティブオブジェクト有効期間管理システムと管理オブジェクト有効期間管理システムと動的に切り替えるステップであって、前記ネイティブオブジェクト有効期間管理システムは、ネイティブオブジェクトピアによって使用されるメモリを、前記ネイティブオブジェクトピアが前記メモリを解放後に再構築することを可能にし、前記管理オブジェクト有効期間管理システムは、管理オブジェクトピアのデストラクションを可能にする、ステップと、
    前記ネイティブオブジェクトに対する参照を有する前記管理オブジェクトピア上に弱参照に対する参照を含み、および前記管理オブジェクトピアがファイナライズされるまで前記弱参照に対する参照を維持することによって前記管理オブジェクトピアのファイナライゼーション中の競合状態を回避する保留リストを格納するステップであって、前記ファイナライゼーションは、前記ネイティブオブジェクト上の前記管理オブジェクトピアの参照を解放する、ステップと、
    ネイティブオブジェクト有効期間管理システムおよび管理オブジェクト有効期間管理システムによって提供される、前記1つまたは複数のネイティブオブジェクトピアに関する到達可能性情報に基づいて将来的にアクセスされない未使用オブジェクトを識別することによって前記識別された未使用オブジェクトによって使用されるリソースを再構築するステップと
    を備えることを特徴とする方法。
  16. 前記解析に基づいて、前記管理オブジェクトピアに対する少なくとも1つの参照を弱めるステップまたは強めるステップの少なくとも1つをさらに備えることを特徴とする請求項15に記載の方法。
  17. 前記解析に基づいて、前記管理オブジェクトピア側にイントラネイティブ参照を複製するステップをさらに備えることを特徴とする請求項15に記載の方法。
  18. 前記管理オブジェクトピアと1つまたは複数の前記ネイティブオブジェクトピアとの間の参照を解放することによってオブジェクトシステムシャットダウンを最適化するステップをさらに備えることを特徴とする請求項15に記載の方法。
  19. 請求項15に記載の方法を実施するコンピュータ実行可能命令が格納されていることを特徴とするコンピュータ読み取り可能な記憶媒体。
JP2010506370A 2007-04-27 2008-03-26 ネイティブピア/管理ピアに関するオブジェクト有効期間の管理 Active JP5452474B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/741,549 US9785549B2 (en) 2007-04-27 2007-04-27 Managing object lifetime for native/managed peers
US11/741,549 2007-04-27
PCT/US2008/058213 WO2008134163A1 (en) 2007-04-27 2008-03-26 Managing object lifetime for native/managed peers

Publications (2)

Publication Number Publication Date
JP2010525490A JP2010525490A (ja) 2010-07-22
JP5452474B2 true JP5452474B2 (ja) 2014-03-26

Family

ID=39888268

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010506370A Active JP5452474B2 (ja) 2007-04-27 2008-03-26 ネイティブピア/管理ピアに関するオブジェクト有効期間の管理

Country Status (6)

Country Link
US (1) US9785549B2 (ja)
EP (1) EP2153317B1 (ja)
JP (1) JP5452474B2 (ja)
CN (1) CN101669092B (ja)
BR (1) BRPI0809929A2 (ja)
WO (1) WO2008134163A1 (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5031470B2 (ja) * 2007-07-19 2012-09-19 株式会社日立製作所 メモリ管理方法、情報処理装置及びメモリ管理プログラム
US8417744B2 (en) * 2011-03-23 2013-04-09 Microsoft Corporation Techniques to manage a collection of objects in heterogeneous environments
US9384129B2 (en) 2011-06-16 2016-07-05 Microsoft Technology Licensing Llc Garbage collection based on total resource usage and managed object metrics
US9053017B2 (en) * 2011-09-09 2015-06-09 Microsoft Technology Licensing, Llc Managing object lifetime in a cyclic graph
US9229743B2 (en) 2011-09-23 2016-01-05 International Business Machines Corporation Prevention of classloader memory leaks in multitier enterprise applications
US20140040326A1 (en) 2012-07-31 2014-02-06 International Business Machines Corporation Garbage collection of an object
JP6051733B2 (ja) * 2012-09-25 2016-12-27 日本電気株式会社 制御システム、制御方法、及び、制御プログラム
US9098269B2 (en) 2013-01-04 2015-08-04 Microsoft Technology Licensing, Llc System and method to ensure resource access safety with immutable object types
US9229959B2 (en) 2013-01-04 2016-01-05 Microsoft Technology Licensing, Llc Object graph partial immutability and isolation enforcement
US9009203B2 (en) * 2013-02-19 2015-04-14 Sap Se Lock-free, scalable read access to shared data structures using garbage collection
CN103226476B (zh) * 2013-05-20 2016-06-08 张永强 垃圾对象检测方法和装置
US9600551B2 (en) 2013-10-24 2017-03-21 Sap Se Coexistence of message-passing-like algorithms and procedural coding
US9684685B2 (en) 2013-10-24 2017-06-20 Sap Se Using message-passing with procedural code in a database kernel
US9183020B1 (en) 2014-11-10 2015-11-10 Xamarin Inc. Multi-sized data types for managed code
US9213638B1 (en) * 2015-03-24 2015-12-15 Xamarin Inc. Runtime memory management using multiple memory managers
US10296314B2 (en) * 2016-11-01 2019-05-21 Facebook, Inc. Detecting and remedying memory leaks caused by object reference cycles
US9934126B1 (en) 2017-03-08 2018-04-03 Microsoft Technology Licensing, Llc Indexing a trace by insertion of reverse lookup data structures
US9940369B1 (en) 2017-03-08 2018-04-10 Microsoft Technology Licensing, Llc Searching an indexed time-travel trace
US9959194B1 (en) 2017-03-08 2018-05-01 Microsoft Technology Licensing, Llc Indexing a trace by insertion of memory snapshots for replay responsiveness
US9983978B1 (en) 2017-03-08 2018-05-29 Microsoft Technology Licensing, Llc Querying an indexed time-travel trace
US10185645B2 (en) 2017-03-08 2019-01-22 Microsoft Technology Licensing, Llc Resource lifetime analysis using a time-travel trace
US9934127B1 (en) 2017-03-08 2018-04-03 Microsoft Technology Licensing, Llc Indexing a trace by insertion of key frames for replay responsiveness
US10282274B2 (en) 2017-06-14 2019-05-07 Microsoft Technology Licensing, Llc Presenting differences between code entity invocations

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5274804A (en) 1991-11-20 1993-12-28 Parcplace Systems Automatic storage-reclamation postmortem finalization process
US5398334A (en) * 1992-04-06 1995-03-14 General Electric Company System for automatic garbage collection using strong and weak encapsulated pointers
US5732270A (en) * 1994-09-15 1998-03-24 Visual Edge Software Limited System and method for providing interoperability among heterogeneous object systems
US5765174A (en) * 1995-10-06 1998-06-09 Sun Microsystems, Inc. System amd method for distributed object resource management
US5794256A (en) * 1996-12-12 1998-08-11 Microsoft Corporation Pointer swizzling facility using three-state references to manage access to referenced objects
US5918235A (en) * 1997-04-04 1999-06-29 Hewlett-Packard Company Object surrogate with active computation and probablistic counter
US5873105A (en) * 1997-06-26 1999-02-16 Sun Microsystems, Inc. Bounded-pause time garbage collection system and method including write barrier associated with a source instance of a partially relocated object
US6473773B1 (en) * 1997-12-24 2002-10-29 International Business Machines Corporation Memory management in a partially garbage-collected programming system
US6308185B1 (en) 1998-03-06 2001-10-23 Sun Microsystems, Inc. Methods and apparatus for generational dynamic management of computer memory
US6681263B1 (en) * 1998-03-31 2004-01-20 Intel Corporation Control of software object lifetime
US7310801B2 (en) * 2000-04-27 2007-12-18 Microsoft Corporation Servicing a component-based software product throughout the software product lifecycle
US6865657B1 (en) * 2000-06-02 2005-03-08 Sun Microsystems, Inc. Garbage collector for a virtual heap
US6654773B2 (en) * 2001-02-27 2003-11-25 Tajea Corporation Method of deterministic garbage collection
US6728738B2 (en) * 2002-04-03 2004-04-27 Sun Microsystems, Inc. Fast lifetime analysis of objects in a garbage-collected system
US7546607B2 (en) * 2002-11-19 2009-06-09 Microsoft Corporation Native code exposing virtual machine managed object
US7143124B2 (en) * 2002-12-06 2006-11-28 Sun Microsystems, Inc. Detection of dead regions during incremental collection
US7072905B2 (en) * 2002-12-06 2006-07-04 Sun Microsystems, Inc. Better placement of objects reachable from outside a generation managed by the train algorithm
US7519640B1 (en) * 2004-06-30 2009-04-14 Sun Microsystems, Inc. Better placement of dying objects in a generation managed by the train algorithm
US8701095B2 (en) * 2005-07-25 2014-04-15 Microsoft Corporation Add/remove memory pressure per object
US7409489B2 (en) 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
CN101046755B (zh) * 2006-03-28 2011-06-15 郭明南 一种计算机自动内存管理的系统及方法

Also Published As

Publication number Publication date
US20080270482A1 (en) 2008-10-30
EP2153317B1 (en) 2014-11-26
JP2010525490A (ja) 2010-07-22
CN101669092B (zh) 2013-09-11
EP2153317A1 (en) 2010-02-17
WO2008134163A1 (en) 2008-11-06
US9785549B2 (en) 2017-10-10
CN101669092A (zh) 2010-03-10
EP2153317A4 (en) 2012-12-12
BRPI0809929A2 (pt) 2014-10-07

Similar Documents

Publication Publication Date Title
JP5452474B2 (ja) ネイティブピア/管理ピアに関するオブジェクト有効期間の管理
US11023318B1 (en) System and method for fast random access erasure encoded storage
US10891264B2 (en) Distributed, scalable key-value store
US10031672B2 (en) Snapshots and clones in a block-based data deduplication storage system
TWI492077B (zh) 檔案系統的檢查點
US7743038B1 (en) Inode based policy identifiers in a filing system
US10649897B2 (en) Access request processing method and apparatus, and computer device
US7890716B2 (en) Method of managing time-based differential snapshot
JP5382227B2 (ja) ストレージシステム
US8214377B2 (en) Method, system, and program for managing groups of objects when there are different group types
US20130205097A1 (en) Enhanced integrity through atomic writes in cache
CN108647151A (zh) 一种全闪系统元数据落盘方法、装置、设备及存储介质
US11093387B1 (en) Garbage collection based on transmission object models
US20200014688A1 (en) Data processing unit with key value store
US8621143B2 (en) Elastic data techniques for managing cache storage using RAM and flash-based memory
JP2007511820A (ja) 独立ノード冗長アレイに対するポリシーに基づく管理
JP5833754B2 (ja) ファイルシステムをクリーニングするための方法及び装置並びにその記憶媒体
KR101766790B1 (ko) 메인 메모리 데이터 베이스를 관리 하기 위한 방법 및 컴퓨팅 장치
JP2012530294A (ja) ガベージコレクション中の分散キャッシュの可用性
US9619322B2 (en) Erasure-coding extents in an append-only storage system
CN113377292B (zh) 一种单机存储引擎
CN106326040B (zh) 一种快照元数据管理方法和装置
US20180322675A1 (en) Image Processing Method and Computing Device
CN107329699A (zh) 一种纠删重写方法及系统
KR20170106626A (ko) 메인 메모리 데이터 베이스를 관리 하기 위한 방법 및 컴퓨팅 장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110218

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121226

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130111

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130410

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130510

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130809

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130829

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130903

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131203

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131227

R150 Certificate of patent or registration of utility model

Ref document number: 5452474

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250