JP2014529142A - 循環グラフにおけるオブジェクト寿命の管理 - Google Patents

循環グラフにおけるオブジェクト寿命の管理 Download PDF

Info

Publication number
JP2014529142A
JP2014529142A JP2014529878A JP2014529878A JP2014529142A JP 2014529142 A JP2014529142 A JP 2014529142A JP 2014529878 A JP2014529878 A JP 2014529878A JP 2014529878 A JP2014529878 A JP 2014529878A JP 2014529142 A JP2014529142 A JP 2014529142A
Authority
JP
Japan
Prior art keywords
count
garbage collection
wrapper
act
graph
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.)
Granted
Application number
JP2014529878A
Other languages
English (en)
Other versions
JP6087928B2 (ja
JP2014529142A5 (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 JP2014529142A publication Critical patent/JP2014529142A/ja
Publication of JP2014529142A5 publication Critical patent/JP2014529142A5/ja
Application granted granted Critical
Publication of JP6087928B2 publication Critical patent/JP6087928B2/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2237Vectors, bitmaps or matrices
    • 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
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Memory System (AREA)
  • Processing Of Solid Wastes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Stored Programmes (AREA)

Abstract

本発明は、循環グラフにおいてオブジェクト寿命を管理する方法、システム及びコンピュータプログラム製品に及ぶ。本発明の実施形態は、割り当て済みのシステムリソースを、例えば(参照カウント法、及びガベージコレクションのような)異なるリソース再生技術を混合するオブジェクトのグラフから回収することを含む。ガベージコレクションを実行すべきと決定したことに応答して、GCオブジェクトと参照カウントオブジェクトとの間の参照を検出する。検出された任意の参照に対する参照タイプ(例えば直接、間接、標準、トラック、弱等)も決定される。ガベージコレクションを実行して、任意の割り当て済みのシステムリソースを回収することができるかどうかを決定する。ガベージコレクションは、オブジェクトを回収すべきかどうかを決定するときに、GCオブジェクトと参照カウントオブジェクトとの間の参照と参照タイプとを考慮する。

Description

本発明は、循環グラフにおいてオブジェクトの寿命を管理することに関する。
コンピュータシステム及び関連技術は、社会の多くの側面に影響を与える。実際に、情報を処理するコンピュータシステムの能力は、人々の生き方及び働き方を変化させた。コンピュータシステムは、今日では一般に、コンピュータシステムの出現前は人手で行われていたタスク(例えば文書処理、スケジューリング、会計等)のホストを実行する。より最近では、コンピュータシステムは相互に、及び他の電子機器と結合されて、有線及び無線の双方のコンピュータネットワークを形成し、コンピュータシステム及び他の電子機器は、これらのコンピュータネットワークを介して電子データを伝達することができる。したがって、多くのコンピューティングタスクの実行は、複数の異なるコンピュータシステム、及び/又は複数の異なるコンピューティング環境にわたって分散される。
一部のプログラミング環境(例えばC++)は、オブジェクトが参照されなくなり、したがってオブジェクトを記憶するのに使用されたメモリを解放することができるときを決定する仕組みとして、参照カウント法を使用する。オブジェクトの寿命は、オブジェクトを直接参照することができない場合、そのオブジェクトをメモリから削除することにより管理される。あるオブジェクトが別のオブジェクトを参照するとき、参照されるオブジェクトの参照カウントがインクリメントされる。オブジェクトが別のオブジェクトを逆参照(dereference)するとき、そのオブジェクトの参照カウントはデクリメントされる。オブジェクトの参照カウントがゼロに達すると、このオブジェクトは、アクセス不可であり、破壊される可能性がある。
しかしながら、参照カウント法は、比較的単純であり、メモリリークをもたらす可能性がある(すなわち、未使用かつおそらくアクセス不可であるオブジェクトがメモリを消費し続ける)。例えば2つのオブジェクトは、相互に参照するが、いずれの他のオブジェクトによって参照されることなく、循環という結果を招く可能性がある。循環が起こるとき、参照カウント法は、双方のオブジェクトが単に互いを参照するだけであり、それ以外には参照されていない、と決定することができない可能性がある。したがって、2つのオブジェクトのためのメモリは解放されず、メモリリークを引き起こすことになる。
他のプログラミング環境(例えばC#)は、オブジェクトが参照されなくなり、したがってオブジェクトを記憶するのに使用されたメモリを解放することができるときを決定する仕組みとして、ガベージコレクションを使用する。ガベージコレクションは、直接又は間接的に参照することができないオブジェクトを見つけ、これらのオブジェクトを削除することによって、オブジェクトの寿命を管理する。ガベージコレクションは、間接的な参照を考慮に入れることにより、循環に関連する問題に対処する。
一部のプログラミング環境は、参照カウントの対象となるオブジェクト及びガベージコレクションの対象となるオブジェクトを利用する。例えば開発者は、異なるオブジェクト寿命管理技術を使用する異なるプログラミング言語を利用したいと考えることがある。これらの混合プログラミング環境では、参照カウントの対象となるオブジェクトが、ガベージコレクションの対象となるオブジェクトを可能性があり、及び/又はガベージコレクションの対象となるオブジェクトが、参照カウントの対象となるオブジェクトを参照する可能性がある。しかしながら、ガベージコレクションシステムは、参照カウントの対象となるオブジェクトを介した間接的な参照をトラックできないことがある。したがって、混合プログラミング環境においても、やはりメモリリークが起こる可能性がある。
本発明は、循環グラフにおいてオブジェクトの寿命を管理する方法、システム及びコンピュータプログラム製品に及ぶ。本発明の諸実施形態は、例えば異なるリソース再生技術を混合するオブジェクトのグラフから、割り当て済みのシステムリソースを再生用に準備することと、回収することとを含む。一部の実施形態では、コンピュータシステムは、ガベージコレクションを実装すべきであると決定する。ガベージコレクションを実装すべきとの決定に応答して、ガベージコレクションに従って管理されるオブジェクトと参照カウント法に従って管理されるオブジェクトとの間の参照を検出する。任意の検出された参照に対する参照タイプ(例えば直接参照、間接参照、標準参照、トラック参照、弱参照(weaken)等)も決定される。ガベージコレクションは、任意の割り当て済みシステムリソースを回収できるかどうかを判断するように実装される。ガベージコレクションは、システムリソース回収の決定の一部として、ガベージコレクションに従って管理されるオブジェクトと参照カウント法に従って管理されるオブジェクトとの間の参照と参照タイプとを考慮する。
概して、オブジェクトは、他のオブジェクトとの間の参照の作成及び/又は削除を要求する可能性がある。例えば、オブジェクトが(例えば、システムリソースを回収するために)収集されるべきとき、収集されるべきオブジェクトから参照される他のオブジェクトに、収集されるべきオブジェクトをグラフから削除する前に通知することができる。この通知に応答して、参照されるオブジェクトは、該参照されるオブジェクトから更なるオブジェクトへの弱参照(weakened reference)を切り離すことができる。ガベージコレクションはその後、いずれかの更なる割り当て済みのシステムリソースが回収され得るかどうかの決定を継続することができる。継続されるガベージコレクションは、他のオブジェクトから更なるオブジェクトへの弱参照が切り離されると判断する。
この「発明の概要」の記載は、「発明を実施するための形態」の欄においてさらに後述される概念の選択を簡略化された形式で紹介するために設けられている。この「発明の概要」の記載は、特許請求に係る主題の重要な特徴及び本質的な特徴を特定するようには意図されておらず、特許請求に係る主題の範囲を決定する際の一助として用いられるようにも意図されていない。
本発明の更なる特徴及び利点は、以下の説明に記載されており、部分的にその説明から自明であるか、あるいは発明の実施により分かるであろう。本発明の特徴及び利点は、特許請求の範囲において特に指摘された手段及び組み合わせを用いて実現され、得られることがある。本発明のこれらの特徴及び他の特徴は、以下の説明及び特許請求の範囲からより完全に明らかになるか、又は後述されるように発明の実施により分かることがある。
発明の上記並びに他の利点及び特徴が得られる手法を説明するために、簡単に上述した本発明を、添付図面において図示される具体的な実施形態を参照することによってより詳しく説明する。これらの図面は、単に本発明の代表的な実施形態を示すものであり、したがって、発明の範囲を限定するものとみなされるべきではないとの理解の下で、添付図面を用いて更なる特定性と詳細さとをもって本発明を記載し説明する。
循環グラフにおいてオブジェクト寿命の管理を容易にする例示的なコンピュータアーキテクチャを示す図である。 例示的な循環グラフを示す図である。 例示的な循環グラフを示す図である。 例示的な循環グラフを示す図である。 例示的な循環グラフを示す図である。 例示的な循環グラフを示す図である。 システムリソースを回収しようとする試みに備えてカウント型オブジェクトグラフからの参照情報をガベージコレクション型オブジェクトグラフと同期させる例示的な方法のフローチャートを示す図である。 参照カウントオブジェクトがシステムリソースを回収しようとする試みに備えてどのように参照されるかを決定する例示的な方法のフローチャートを示す図である。 割り当て済みのシステムリソースを回収する例示的な方法のフローチャートを示す図である。
本発明は、循環グラフにおいてオブジェクト寿命を管理する方法、システム及びコンピュータプログラム製品に及ぶ。本発明の実施形態は、例えば異なるリソース再生技術を混合するオブジェクトのグラフから、割り当て済みのシステムリソースを回収することを含む。一部の実施形態において、コンピュータシステムは、ガベージコレクションを実装すべきであると決定する。ガベージコレクションを実施すべきと決定したことに応答して、ガベージコレクションに従って管理されるオブジェクトと参照カウント法に従って管理されるオブジェクトとの間の参照が検出される。任意の検出された参照についての参照タイプ(例えば直接参照、間接参照、標準参照、トラック参照、弱参照等)も決定される。ガベージコレクションは、任意の割り当て済みのシステムリソースを回収できるかどうかを判断するように実装される。ガベージコレクションは、システムリソース回収の決定の一部として、ガベージコレクションに従って管理されるオブジェクトと参照カウント法に従って管理されるオブジェクトとの間の参照及び参照タイプを考慮する。
概して、オブジェクトは、他のオブジェクトとの間の参照の作成及び/又は削除を要求する可能性がある。例えば、オブジェクトが(例えば、システムリソースを回収するために)収集されるべきとき、収集されるべきオブジェクトから参照される他のオブジェクトに、収集されるべきオブジェクトをグラフから削除する前に通知することができる。通知に応答して、参照されるオブジェクトは、該参照されるオブジェクトから更なるオブジェクトへの弱参照を切り離すことができる。ガベージコレクションはその後、いずれかの更なる割り当て済みのシステムリソースが回収され得るかどうかの決定を継続することができる。継続されるガベージコレクションは、他のオブジェクトから更なるオブジェクトへの弱参照が切断されると判断する。
本発明の実施形態は、以下でより詳しく検討されるように、例えば1つ又は複数のプロセッサやシステムメモリのようなコンピュータハードウェアを含む、専用又は汎用コンピュータを備えるか、用いることがある。本発明の範囲内の諸実施形態は、コンピュータ実行可能命令及び/又はデータ構造を担持又は記憶する物理的な及び他のコンピュータ読取可能媒体も含む。このようなコンピュータ読取可能媒体は、汎用又は専用コンピュータシステムによってアクセスできる任意の利用可能な媒体とすることができる。コンピュータ実行可能命令を記憶するコンピュータ読取可能媒体は、コンピュータ記憶媒体(装置)である。コンピュータ実行可能命令を担持するコンピュータ読取可能媒体は、伝送媒体である。したがって、限定ではなく例として、本発明の実施形態は、少なくとも2つの明らかに異なる種類のコンピュータ読取可能媒体、すなわち、コンピュータ記憶媒体(装置)と伝送媒体を備える可能性がある。
コンピュータ記憶媒体(装置)は、RAM、ROM、EEPROM、CD−ROM、(例えば、RAMベースの)半導体ドライブ(「SSD」)、フラッシュメモリ、相変化メモリ(「PCM」)、他のタイプのメモリ、他の光学ディスクストレージ、磁気ディスクストレージ若しくは他の磁気記憶装置、又は所望のプログラムコード手段をコンピュータ実行可能命令若しくはデータ構造の形で格納するのに使用可能であり、汎用若しくは専用コンピュータによってアクセスできる任意の他の媒体を含む。
「ネットワーク」は、コンピュータシステム及び/又はモジュール及び/又は電子機器の間での電子データの伝送を可能にする1つ又は複数のデータリンクとして定義される。情報がネットワーク又は別の通信接続(有線、無線又は有線若しくは無線の組み合わせのいずれか)を介してコンピュータに伝達又は提供されるとき、コンピュータは適切にこの接続を伝送媒体とみなす。伝送媒体は、所望のプログラムコード手段をコンピュータ実行可能命令の形式で、又はデータ構造体を担持するのに使用することができ、かつ汎用又は専用コンピュータによりアクセスすることができる、ネットワーク及び/又はデータリンクを含んでもよい。上記の組み合わせも同様にコンピュータ読取可能媒体の範囲に含まれるべきである。
さらに、様々なコンピュータシステムコンポーネントに到達すると、コンピュータ実行可能命令の形式のプログラムコード手段又はデータ構造体を、伝送媒体からコンピュータ記憶媒体(装置)へ(又は逆も同様に)自動的に転送することができる。例えばネットワーク又はデータリンクを介して受信したコンピュータ実行可能命令又はデータ構造体を、ネットワークインターフェースモジュール(例えば、「NIC」)内のRAMにバッファイングすることができ、その後、最終的にコンピュータシステムRAM及び/又はコンピュータシステムにある低揮発性コンピュータ記憶媒体(装置)に転送することができる。したがって、コンピュータ記憶媒体(装置)は、伝送媒体も併せて(又は、それどころか主として)用いるコンピュータシステムコンポーネントに含まれる可能性があることを理解されたい。
コンピュータ実行可能命令は、例えばプロセッサで実行されると、汎用コンピュータ、専用コンピュータ又は専用処理装置に、ある特定の機能又は機能群を実行させる命令及びデータを備える。コンピュータ実行可能命令は、例えばバイナリ、アセンブリ言語のような中間フォーマット命令、又はソースコードでもよい。本主題は、構造的特徴及び/又は方法論的な動作に特有の言語で説明されているが、特許請求の範囲において定義される主題は、説明された特徴又は上記上述の動作に必ずしも限定されないことが理解されよう。むしろ、世知、説明される特徴及び動作は、特許請求の範囲を実施する例示的な形式として開示される。
当業者には、本発明を、多くのタイプのコンピュータシステム構成を有するネットワークコンピューティング環境において実施してもよいことが認識されよう。そのようなコンピュータシステム構成には、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、メッセージプロセッサ、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベース又はプログラマブル電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、携帯電話機、PDA、タブレット、ページャ、ルータ、スイッチ等が含まれる。本発明は、ネットワークを通じて(有線データリンク、無線データリンク、又は有線データリンクと無線データリンクの組み合わせのいずれかによって)リンクされる、ローカル及びリモートコンピュータシステムが双方ともにタスクを実行する分散システム環境において実施されてもよい。分散システム環境では、プログラムモジュールは、ローカルメモリ記憶装置及びリモートメモリ記憶装置の双方に位置することがある。
明細書及び特許請求の範囲において、「参照ラッパー(「RW:Reference Wrapper」)」は、ガベージコレクションに従って回収されるオブジェクト(以下、「GCオブジェクト」と呼ばれることがある)として定義され、別のGCオブジェクトから参照カウント法に従って回収される更なるオブジェクト(以下、「参照カウントオブジェクト(Ref. Counted object)」と呼ばれることがある)への参照を記憶する。すなわち、RWは、GCオブジェクトから参照カウントオブジェクトへの参照を記憶する。
明細書及び特許請求の範囲において、「カウントラッパー(「CW:Counted Wrapper」)」は、別の参照カウントオブジェクトからGCオブジェクトへの参照を記憶する参照カウントオブジェクトとして定義される。すなわち、CWは、参照カウントオブジェクトからGCオブジェクトへの参照を記憶する。
明細書及び特許請求の範囲において、「標準参照」は、任意の参照カウントされた参照として定義される。例えば、共通オブジェクトモデル(「COM:Common Object Model」)参照は、オブジェクト参照カウント法アルゴリズムの一例である。標準参照を、追加参照/解放パターンに従って実装することができる。
明細書及び特許請求の範囲において、「トラック参照(tracked reference)」は、標準参照に類似するが、ガベージコレクションの間にもオブジェクトと通信する参照として定義される。通信は、参照カウントオブジェクト(例えばCW)がRW経由以外の何らかの(直接又は間接のいずれかの)方法で到達可能であるか否かを指示することができる。参照カウントオブジェクトがRW経由以外で到達可能であるとき、該参照カウントオブジェクトを保護する(又は「固定する(peg)」)ことができる。保護されると、参照カウントオブジェクトを直接参照するRW又は他のGCオブジェクトがない場合であっても、ガベージコレクションを切り抜けることができる。参照カウントオブジェクトがRWを介してのみ到達可能であるとき、参照カウントオブジェクトは保護されない。
明細書及び特許請求の範囲において、「弱参照(weak reference)」は、オブジェクトが回収されることを避けることなくオブジェクトを参照するのに使用される参照である。すなわち、弱参照は、弱参照によって直接参照されるオブジェクトの寿命を制御しない。
一部の実施形態において、ガベージコレクションの前に(例えばGCシステムが、メモリから削除される可能性があるGCオブジェクトを特定しているとき)、GCシステムは、あらゆるRWに進み、カウントオブジェクトグラフを介して到達することができるCWを決定する。RWターゲットからCWへ到達する複数の方法が存在する場合、1つ又は複数が見つかる可能性がある。あらゆる発見に対して、GC依存性が、RWと(別のGCオブジェクトである)CWターゲットとの間で作成される。したがって、RWオブジェクトがGC動作中に収集されない場合、CWのターゲットもまた収集されない。すなわち、RWは、CWターゲットの寿命のプロテクタである。
他の実施形態では、ガベージコレクションの前に、カウントオブジェクトシステムは、固定されるべきCWを特定する。CWは、RW経由以外で(直接又は間接に)CWに到達する何らかの方法が存在する場合、固定されるべきである。すなわち、たとえ、CWを直接参照するRW又は他のGCがガベージコレクションプロセスを切り抜けない場合であっても、CWターゲットをガベージコレクションから保護すべき事例である。
これらの収集前の動作は、ロック機構を用いてカウントオブジェクト間の参照を保護するのに使用される可能性がある。
図1Aは、循環グラフでオブジェクト寿命の管理を容易にする例示的なコンピュータアーキテクチャ100を図示している。コンピュータアーキテクチャ100は、寿命管理モジュール101と、カウント型オブジェクトグラフ106と、ガベージコレクション型オブジェクトグラフ107とを含む。カウント型オブジェクトグラフ106内の参照カウントオブジェクト151は、ガベージコレクション型オブジェクトグラフ107内のGCオブジェクト152を参照する可能性があり、逆もまた同様である。参照カウントオブジェクト151とGCオブジェクト152との間の参照は、循環グラフ109を形成する可能性がある。
概して、寿命管理モジュール101は、例えば循環グラフ109のような循環グラフにおいてオブジェクト寿命を管理するように構成される。図示されるように、寿命管理モジュール101は、参照カウントコンポーネント102と、解析コンポーネント103と、ガベージコレクションコンポーネント104とを含む。
参照カウントコンポーネント102は、循環グラフ内でオブジェクトに対する参照を計算するように構成される。参照カウントコンポーネント102は、任意の参照カウント技術を最も多く利用して、オブジェクト上の参照を計算することができる。参照は、オブジェクト間の外部参照を含むか、又は内部参照を含むことができる。参照カウントコンポーネント102は、オブジェクトに対する参照の総数を決定し、それに応じて参照カウントをオブジェクトに割り当てることができる。
解析コンポーネント103は、循環グラフ内のオブジェクトに対する参照を解析するように構成される。解析に基づいて、解析コンポーネント103は、オブジェクト間の参照を弱めるか、又は強くすることができる。解析コンポーネント103は、参照カウントシステムからガベージコレクションシステムへの寿命管理の遷移及びその逆の推移を、解析に基づいて決定することができる。
概して、寿命管理モジュール101は、ガベージコレクションコンポーネント104を利用することにより、未使用オブジェクトを破壊するか、解放することができる。オブジェクトが到達可能ではなく、そのため、オブジェクトへの直接又は間接参照が存在しないとき、オブジェクトを収集することができる。ガベージコレクションコンポーネント104は、オブジェクトが破壊されるべきであることを、そのオブジェクトの到達可能性情報に基づいて決定することができる。到達可能性情報を、参照カウントコンポーネント102及び/又は解析コンポーネント103により提供することができる。
本発明の諸実施形態は、参照カウント情報をガベージコレクションと同期させることを含む。参照カウント側からGC側への参照情報は、GCプロセスの間、又はGCプロセスの一部として提供される。すなわち、RWからCWターゲットへの参照は、GC中に作られ、GCプロセスが完了した後に放棄される可能性がある(次のGCに関して必要に応じて再作成される)。代替的に及び/又は組み合わせて、何らかのタイプのキャッシュを性能の最適化のために使用することができる。
図1Bは、例示的な循環グラフ109を示す。図1Bを参照すると、循環グラフ109は、参照カウントオブジェクト111及び112と、GCオブジェクト114及び116と、カウントラッパー113と、参照ラッパー117とを含む。GCオブジェクト114は、参照ラッパー117を通じて参照カウントオブジェクト111を参照する(参照126)。参照カウントオブジェクト112は、カウントラッパー113を通じてGCオブジェクト116を参照する(参照123)。参照121(外部参照)も、参照カウントオブジェクト111を参照する。
図2は、循環グラフにおいてオブジェクト寿命を管理する例示的な方法200のフローチャートを示す。方法200を、コンピュータアーキテクチャ100のコンポーネント及び図1Bに表されるような循環グラフ109に関連して説明する。
方法200は、ガベージコレクションを実施すべきことを決定する動作(動作201)を含む。例えばガベージコレクションコンポーネント104は、循環グラフ109のガベージコレクションが実行すべきである可能性がある。
上記決定に応答して、ガベージコレクションを実行する前に、方法200は、カウントラッパーに、参照ラッパーからカウント型オブジェクトグラフを介して到達することができることを決定する動作(動作202)を含む。例えば、解析コンポーネント103は、カウントラッパー113に、参照ラッパー117から到達することができると決定する可能性がある。この決定に応答して、かつ、ガベージコレクションを実行する前に、方法200は、参照ラッパーからGCオブジェクトへの参照を作成することにより、カウントラッパーを介して参照されるGCオブジェクトの寿命を保護する動作(動作203)も含む。例えば解析モジュール103は、参照ラッパー117からGCオブジェクト116への参照127を作成することによりGCオブジェクト116を保護することができる。
方法200は、ガベージコレクションを実行して、いずれかの割り当て済みシステムリソースを回収することができるかどうかを決定する動作(動作204)を含む。ガベージコレクションは、参照ラッパーにより有効に参照されたGCオブジェクトを考慮する。例えばガベージコレクションコンポーネント104は、循環グラフ109に関してガベージコレクションを実行することができる。ガベージコレクションは、循環グラフ109のオブジェクトのために割り当てられた任意のリソースを回収することができるかどうかを決定することができる。ガベージコレクションコンポーネント104は、GCオブジェクト116が参照ラッパー117により有効に参照される(参照127)と判断することができる。
方法200は、ガベージコレクションの後に、参照ラッパーとGCオブジェクトとの間の参照を削除する動作(動作205)を含む。例えば、循環グラフ109に対するガベージコレクションに続いて、解析モジュール103は参照127を削除することができる。
図1Cは、例示的な循環グラフ109を示す。図1Bと同様に、図1Cの循環グラフ109は、参照カウントオブジェクト111及び112と、GCオブジェクト114及び116と、カウントラッパー113と、参照ラッパー117とを含む。GCオブジェクト114は、参照ラッパー117を通じて参照カウントオブジェクト111を参照する(参照126)。参照カウントオブジェクト112は、カウントラッパー113を通じてGCオブジェクト116を参照する(参照123)。参照121(外部参照)も、参照カウントオブジェクト111を参照する。
図3は、参照カウントオブジェクトが、システムリソースを回収しようとする試みに備えてどのように参照されるかを決定する例示的な方法300のフローチャートを示す。方法300を、コンピュータアーキテクチャ100のコンポーネント及び図1Cに表されるように循環グラフ109に関連して説明する。
方法300は、ガベージコレクションを実行すべきであると決定する動作(動作301)を含む。例えばガベージコレクションコンポーネント104は、循環グラフ109のガベージコレクションを実行すべきであると決定する可能性がある。
上記決定に応答して、ガベージコレクションを実行する前に、方法300は、指定されたタイプの参照によって参照カウントオブジェクトの到達可能性を決定する動作(動作302)を含む。例えば解析モジュール103は、標準及び/又はトラック参照によるカウントラッパー113の到達可能性を決定することができる。図1Cに表されるように、カウントラッパー113は、参照121(標準参照)及び参照126(トラック参照)から到達可能である。
上記決定に応答して、ガベージコレクションを実行する前に、方法300は、指定されたタイプの参照に基づいてガベージコレクションに関連する情報にアクセスする動作(動作303)を含む。例えば参照カウントコンポーネント102は、循環グラフ109のガベージコレクションに関連する参照121及び/又は参照126からの情報にアクセスすることができる。参照121に関連して、参照カウントコンポーネント102は、参照121が標準参照であることを示す情報にアクセスする可能性がある。
参照126に関連して、参照カウントコンポーネント102は、参照126がトラック参照であることを指示する情報にアクセスする可能性がある。参照126から、参照カウントコンポーネント102は、カウントラッパー113がRW以外のオブジェクトを通じて到達可能であるか否かという情報にもアクセスすることができる。図1Cでは、参照126は、カウントラッパー113が参照ラッパー117のみから到達可能であることを指示するであろう。しかしながら、標準参照121を通じた到達可能性に基づいて、参照カウントコンポーネント102は、ガベージコレクション中の保護のためカウントラッパー113を固定することができる。
方法300は、ガベージコレクションを実行して、任意の割り当て済みのシステムリソースを回収することができるかどうかを決定する動作(動作304)を含む。ガベージコレクションは、参照カウントオブジェクトを回収すべきかどうかを判断するときに、アクセスした情報を考慮する。例えばガベージコレクションコンポーネント104は、循環グラフ109に対してガベージコレクションを実行することができる。ガベージコレクションは、参照121及び126からアクセスされた情報を考慮することができる。参照カウントコンポーネント102によって固定されているカウントラッパー113に基づいて、カウントラッパー113は回収されず(循環グラフ109内の任意の他のオブジェクトも同様)、メモリ内に残る。
すなわち、参照121が存在するので、カウントラッパー113が固定される。カウントラッパー113を固定することは、GCオブジェクト116がガベージコレクションコンポーネント104によってグローバルに到達可能であると考えられることを意味する。ガベージコレクション中に、オブジェクトが削除されることはない。ガベージコレクションコンポーネント104は、GCオブジェクト116を存続させ、参照124は、ガベージコレクションにGCオブジェクト114を存続させ、これによりRW117を存続させるようにする。RW117は、参照カウントオブジェクト111におけるカウント参照を維持するので、参照カウントオブジェクト111及び112は参照122により存続する。
次に図1Dを参照すると、図1Dは、例示的な循環グラフ109を図示している。図1Dの循環グラフ109は、参照カウントオブジェクト111及び112と、CGオブジェクト114及び116と、カウントラッパー113と、参照ラッパー117とを含む。GCオブジェクト114は、参照ラッパー117を通じて参照カウントオブジェクト111を参照する(参照126)。参照カウントオブジェクト112は、カウントラッパー113を通じてGCオブジェクト116を参照する(参照123)。参照128(外部参照)も、GCオブジェクト114を参照する。
図1Dの場合、解析モジュール103は、カウントラッパー113が参照126(トラック参照)から到達可能であることを決定することができる。参照カウントコンポーネント102は、循環グラフ109のガベージコレクションに関連する参照126からの情報にアクセスすることができる。参照126に関連して、参照カウントコンポーネント102は、参照126がトラック参照であることを示す情報にアクセスすることができる。参照126から、参照カウントコンポーネント102は、カウントラッパー113がRW以外のオブジェクトを通じて到達可能であるか否かという情報にもアクセスすることができる。
図1Dでは、参照126は、カウントラッパー113が参照128を通じて別のオブジェクトから到達可能であることを示すであろう。したがって、参照カウントコンポーネント102は、カウントラッパー113を固定することができる。カウントラッパー113が固定されていることに基づいて、カウントラッパー113は、回収されない(循環グラフ109内の任意の他のオブジェクトも同様)。すなわち、参照128(GCオブジェクト114への直接又は間接的なグローバルGC参照)が存在するので、全てのオブジェクトがメモリ内に残る。例えば、参照128が直接的にグローバルGC参照ではない可能性がある場合、それ自体がグローバルGC参照によって参照されるオブジェクトからの参照である可能性がある。参照128は、ガベージコレクションコンポーネント104にGCオブジェクト114を存続させ、GCオブジェクト114は参照ラッパー117を存続させる。再び図1Bを参照すると、参照127と同様の参照が、GCオブジェクト116を存続させることができる。
次に図1Eを参照すると、図1Eは、例示的な循環グラフ109を図示している。図1Eの循環グラフ109は、参照カウントオブジェクト111及び112と、GCオブジェクト114及び116と、カウントラッパー113と、参照ラッパー117とを含む。GCオブジェクト114は、参照ラッパー117を通じて参照カウントオブジェクト111を参照する(参照126)。参照カウントオブジェクト112は、カウントラッパー113を通じてGCオブジェクト116を参照する(参照123)。
図1Eの場合、解析モジュール103は、カウントラッパー113が参照126(トラック参照)から到達可能であることを決定することができる。参照カウントコンポーネント102は、循環グラフ109のガベージコレクションに関連する参照126からの情報にアクセスすることができる。参照126に関連して、参照カウントコンポーネント102は、参照126がトラック参照であることを示す情報にアクセスすることができる。参照126から、参照カウントコンポーネント102は、カウントラッパー113がRW以外のオブジェクトを通じて到達可能であるかどうかという情報にもアクセスすることができる。
図1Eでは、参照126は、カウントラッパー113が参照ラッパー117のみから到達可能であることを示すであろう。したがって、参照カウントコンポーネント102は、カウントラッパー113を固定しない。カウントラッパー113は固定されないので、カウントラッパー113は、ガベージコレクション中に回収される可能性がある(回収されるであろう)。
図1Eでは、全てのオブジェクトがガベージコレクションプロセスによって削除される。GCオブジェクト114への参照が存在せず、従って同様に参照ラッパー117への参照が存在しないので、ガベージコレクションコンポーネント104は、GCオブジェクト114を削除することができる。参照ラッパー117の削除中に、参照126(参照カウントオブジェクト111に対するカウント)が削除される。カウントの削除は、参照カウントオブジェクト112からカウントを削除した後、参照カウントオブジェクト111に、メモリからこのオブジェクト自身を削除させることになる。参照カウントオブジェクト112は同様に、メモリから自身を削除する前に、その参照カウントオブジェクト112のカウントをカウントラッパー113から削除する。カウントラッパー113は、GCオブジェクト116に対する参照123を削除し、ガベージコレクションコンポーネント104は、これをメモリからGCオブジェクト116を削除するための信号として認識する。
本発明の更なる実施形態は、収集の通知を含む。GCオブジェクトは、収集されるときに(本明細書において後述する)ファイナライズの前に、参照カウントオブジェクトに通知する。この通知は、GCオブジェクトが終了されるまで、参照カウントオブジェクトが実際には解放されない原因となる可能性がある。これは、参照カウント側への弱参照を切り離すことも可能にする。
図1Fは例示的な循環グラフを示す。ここで図1Fを参照すると、図1Fは、例示的な循環グラフ109を図示している。図1Fの循環グラフ109は、参照カウントオブジェクト111及び112と、CGオブジェクト114及び116と、カウントラッパー113と、参照ラッパー117とを含む。GCオブジェクト114は、参照ラッパー117を通じて参照カウントオブジェクト111を参照する(参照126)。参照カウントオブジェクト112は、カウントラッパー113を通じてGCオブジェクト116を参照する(参照123)。参照128(外部参照)もGCオブジェクト114を参照する。弱参照129は、参照カウントオブジェクト112から参照カウントオブジェクト111を参照する。
図4は、割り当て済みのシステムリソースを回収する例示的な方法400のフローチャートを示す。方法400を、コンピュータアーキテクチャ100のコンポーネント及び図1Fに表されるような循環グラフ109に関連して説明する。
方法400は、GCオブジェクトを記憶するのに使用されるシステムリソースの一部が、ガベージコレクション中に回収されるべきあることを決定する動作(動作401)を含む。ここでGCオブジェクトは、参照カウントオブジェクトを参照する。例えばガベージコレクションコンポーネント104は、参照128を削除し、従ってGCオブジェクト114がガベージコレクション中に回収されるべきであることを決定することができる。参照ラッパー117を介して、GCオブジェクト114は、参照カウントオブジェクト111を参照することができる。方法400は、GCオブジェクトを収集する動作(動作402)を含む。例えばガベージコレクションコンポーネント104は、GCオブジェクト114を収集することができる。
方法400は、GCオブジェクトの解放を終える前にGCオブジェクトが収集されていることを参照カウントオブジェクトに通知する動作(動作403)を含む。例えば解析モジュール103は、GCオブジェクト114の解放を終える前に参照カウントオブジェクト111に通知131を送信することができる。一部の実施形態では、通知131は、参照を非同期的に削除する前にも参照カウントオブジェクトに送信される。方法400は、上記通知に応答して、別の参照カウントオブジェクトから上記参照カウントオブジェクトへの弱参照を切り離す動作(動作404)を含む。例えば弱参照129を、通知131に応答して切り離すことができる。
方法400は、ガベージコレクションを継続して、システムリソースの任意の更なる部分を回収することができるかどうかを決定する動作(動作405)を含む。例えばガベージコレクションコンポーネント104は、循環グラフ109のガベージコレクションを継続することができる。
他の追加的な実施形態は、別の参照カウントオブジェクトへのGC参照を要求する参照カウントオブジェクトを含む。すなわち、参照カウントオブジェクトは、別の参照カウントオブジェクトへのRWを参照するCWが作成されることを要求することができる。CG参照を要求することは、リークを引き起こすことなく、意図的に循環を作成するのに役立つ可能性がある。
更なる追加的な実施形態は、GCオブジェクトが参照カウントオブジェクトへのGCオブジェクトの参照を削除することを要求する参照カウントオブジェクトを含む。すなわち、GCオブジェクトは、ファイナライズの間に参照カウントオブジェクトへのGCオブジェクトの参照を解放するように構成される可能性があるが、この要求の場合、解放は即座に起こり得る。
本発明は、本発明の趣旨又は本質的な特性から逸脱することなく他の具体的な形態で具現化されてもよい。説明した実施形態は、全ての観点において単なる例示として解釈されるべきであり、限定的なものとして解釈されるべきではない。したがって、本発明の範囲は、上記説明ではなく特許請求の範囲によって示される。特許請求の範囲と均等な意味及び範囲に含まれる全ての変更が、本発明の範囲に包含されることになる。

Claims (10)

  1. コンピュータシステムにおいて実行される方法であって、該コンピュータシステムは、1つ又は複数のプロセッサとシステムメモリとを含み、オブジェクトを記憶するために前記システムメモリの一部を割り当てるアプリケーションを実行し、システムメモリは、カウント型オブジェクトグラフとガベージコレクション型オブジェクトグラフとを含み、前記カウント型オブジェクトグラフは、参照カウント法に従って寿命が管理される1つ又は複数の参照カウントオブジェクトを含み、前記ガベージコレクション型オブジェクトグラフは、ガベージコレクションに従って寿命が管理される1つ又は複数のガベージコレクション(GC)オブジェクトを含み、参照カウントオブジェクトはカウントラッパーを介してGCオブジェクトを参照し、GCオブジェクトは参照ラッパーを介して参照カウントオブジェクトを参照し、当該方法は、システムリソースを回収しようとする試みに備えて前記カウント型オブジェクトグラフからの参照情報を前記ガベージコレクション型オブジェクトグラフと同期させる方法であり、
    ガベージコレクションを実行すべきであることを決定する動作と、
    前記決定に応答して、ガベージコレクションを実行する前に、
    前記カウントラッパーが前記参照ラッパーから前記カウント型オブジェクトグラフを通じて到達される可能性があることを決定する動作と、
    前記カウントラッパーを介して参照された前記GCオブジェクトの寿命を保護する動作と、
    任意の割り当て済みシステムリソースを回収することができるかどうかを決定するのに、ガベージコレクションを実行する動作であって、前記参照ラッパーによって有効に参照された前記GCオブジェクトを考慮するガベージコレクションを実行する動作と
    を含む、方法。
  2. ガベージコレクションの後に前記参照ラッパーと前記GCオブジェクトとの間の参照を削除する動作をさらに含む、請求項1に記載の方法。
  3. 前記カウントラッパーを介して参照された前記GCオブジェクトの前記寿命を保護する動作は、前記参照ラッパーに対する前記GCオブジェクトの依存性を作成する動作を含む、請求項1に記載の方法。
  4. 前記カウントラッパーが前記参照ラッパーから前記カウント型オブジェクトグラフを通じて到達される可能性があることを決定する動作は、前記カウントラッパーが前記参照ラッパーから前記カウント型オブジェクトグラフを通じて到達される可能性があることを解析モジュールが決定する動作を含む、請求項1に記載の方法。
  5. 前記カウントラッパーが前記GCオブジェクトを間接的に参照することを決定する動作をさらに含む、請求項1に記載の方法。
  6. 前記カウントラッパーが前記GCオブジェクトを直接参照することを決定する動作をさらに含む、請求項1に記載の方法。
  7. 任意の割り当て済みのシステムリソースを回収することができるかどうかを決定するのに、ガベージコレクションを実行する動作は、1つ又は複数のオブジェクトを削除してシステムメモリを回収する動作を含む、請求項1に記載の方法。
  8. コンピュータシステムにおいて実行される方法であって、該コンピュータシステムは、1つ又は複数のプロセッサとシステムメモリとを含み、オブジェクトを記憶するため前記システムメモリの一部を割り当てるアプリケーションを実行し、システムメモリは、カウント型オブジェクトグラフとガベージコレクション型オブジェクトグラフとを含み、前記カウント型オブジェクトグラフは、参照カウント法に従って寿命が管理される1つ又は複数の参照カウントオブジェクトを含み、前記ガベージコレクション型オブジェクトグラフは、ガベージコレクションに従って寿命が管理される1つ又は複数のGCオブジェクトを含み、参照カウントオブジェクトは、カウントラッパーを介してGCオブジェクトを参照し、GCオブジェクトは、参照ラッパーを介して参照カウントオブジェクトを参照し、当該方法は、システムリソースを回収しようとする試みに備えて参照カウントオブジェクトがどのような方法で参照されるかを決定する方法であり、
    ガベージコレクションを実行すべきであることを決定する動作と、
    前記決定に応答して、ガベージコレクションが実行される前に、
    指定されたタイプの参照による参照カウントオブジェクトの到達可能性を決定する動作と、
    前記指定されたタイプの参照に基づいてガベージコレクションに関連する情報にアクセスする動作と、
    任意の割り当て済みのシステムリソースを回収することができるかどうかを決定するのにガベージコレクションを実行する動作であって、前記参照カウントオブジェクトを回収すべきかどうかを決定するときに前記アクセスした情報を考慮するガベージコレクションを実行する動作と
    を含む、方法。
  9. 前記指定されたタイプの参照によって参照カウントオブジェクトの到達可能性を決定する動作は、前記参照カウントオブジェクトが標準参照を通じて到達可能であることを決定する動作を含む、請求項8に記載の方法。
  10. 前記指定されたタイプの参照によって参照カウントオブジェクトの到達可能性を決定することは、前記参照カウントオブジェクトがトラック参照を通じて到達可能であることを決定する動作を含む、請求項8に記載の方法。
JP2014529878A 2011-09-09 2012-09-07 循環グラフにおけるオブジェクト寿命の管理 Active JP6087928B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161533134P 2011-09-09 2011-09-09
US61/533,134 2011-09-09
US13/598,247 US9053017B2 (en) 2011-09-09 2012-08-29 Managing object lifetime in a cyclic graph
US13/598,247 2012-08-29
PCT/US2012/054042 WO2013036701A2 (en) 2011-09-09 2012-09-07 Managing object lifetime in a cyclic graph

Publications (3)

Publication Number Publication Date
JP2014529142A true JP2014529142A (ja) 2014-10-30
JP2014529142A5 JP2014529142A5 (ja) 2015-10-01
JP6087928B2 JP6087928B2 (ja) 2017-03-01

Family

ID=47830782

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014529878A Active JP6087928B2 (ja) 2011-09-09 2012-09-07 循環グラフにおけるオブジェクト寿命の管理

Country Status (7)

Country Link
US (2) US9053017B2 (ja)
EP (1) EP2754054B1 (ja)
JP (1) JP6087928B2 (ja)
KR (2) KR102074113B1 (ja)
CN (1) CN102999328B (ja)
HK (1) HK1183533A1 (ja)
WO (1) WO2013036701A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019133666A (ja) * 2018-02-02 2019-08-08 三星電子株式会社Samsung Electronics Co.,Ltd. グラフィックプロセシングユニット上での機械学習トレーニングのためのメモリ管理方法及びシステム

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9053017B2 (en) 2011-09-09 2015-06-09 Microsoft Technology Licensing, Llc Managing object lifetime in a cyclic graph
CN103226476B (zh) * 2013-05-20 2016-06-08 张永强 垃圾对象检测方法和装置
US10437720B2 (en) * 2014-03-12 2019-10-08 Optumsoft, Inc. Deferred destruction for efficient resource reclamation
US10438253B2 (en) 2015-11-29 2019-10-08 International Business Machines Corporation Reuse of computing resources for cloud managed services
US10223163B2 (en) 2016-07-14 2019-03-05 Microsoft Technology Licensing, Llc Workflow-based object destruction
CN108073461B (zh) * 2016-11-11 2021-01-19 腾讯科技(深圳)有限公司 内存泄漏调试方法及装置
US9983978B1 (en) 2017-03-08 2018-05-29 Microsoft Technology Licensing, Llc Querying 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
US9934126B1 (en) 2017-03-08 2018-04-03 Microsoft Technology Licensing, Llc Indexing a trace by insertion of reverse lookup data structures
US9934127B1 (en) 2017-03-08 2018-04-03 Microsoft Technology Licensing, Llc Indexing a trace by insertion of key frames for replay responsiveness
US9940369B1 (en) 2017-03-08 2018-04-10 Microsoft Technology Licensing, Llc Searching 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
CN108804337A (zh) * 2017-05-04 2018-11-13 华为技术有限公司 内存垃圾回收的方法、装置及计算机存储介质
US10282274B2 (en) 2017-06-14 2019-05-07 Microsoft Technology Licensing, Llc Presenting differences between code entity invocations
US10558564B2 (en) 2017-09-28 2020-02-11 Hewlett Packard Enterprise Development Lp Pointers in a memory managed system
CN107908567A (zh) * 2017-11-27 2018-04-13 腾讯科技(深圳)有限公司 一种Java对象引用方法、装置和介质
CN110597737B (zh) * 2019-08-22 2022-03-08 腾讯音乐娱乐科技(深圳)有限公司 数据处理方法、装置、存储介质及电子设备
KR102194413B1 (ko) * 2020-06-18 2020-12-23 인터와이즈 주식회사 역방향 경로 탐색을 이용한 혼합형 가비지 컬렉션 방법 및 이를 이용하는 가비지 컬렉션 시스템
KR102453983B1 (ko) * 2021-12-14 2022-10-31 인터와이즈 주식회사 생존 경로 정보 기반 가비지 컬렉션 방법

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11232162A (ja) * 1998-02-19 1999-08-27 Fujitsu Ltd ガベージコレクション方法
WO2000057277A1 (en) * 1999-03-23 2000-09-28 Koninklijke Philips Electronics N.V. Memory reclamation method
US6182107B1 (en) * 1997-06-03 2001-01-30 Object Technology Licensing Corporation Management of reference object lifetimes in object oriented programs
US20020129343A1 (en) * 2000-12-28 2002-09-12 International Business Machines Corporation Estimation of object lifetime using static analysis
JP2003050740A (ja) * 2001-05-29 2003-02-21 Matsushita Electric Ind Co Ltd ガベージコレクション装置及びガベージコレクション方法
US20030191783A1 (en) * 2002-04-03 2003-10-09 Sun Microsystems, Inc., A Delaware Corporation Fast lifetime analysis of objects in a garbage-collected system
WO2008134163A1 (en) * 2007-04-27 2008-11-06 Microsoft Corporation Managing object lifetime for native/managed peers

Family Cites Families (29)

* 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
US5920876A (en) 1997-04-23 1999-07-06 Sun Microsystems, Inc. Performing exact garbage collection using bitmaps that identify pointer values within objects
GB9721659D0 (en) 1997-10-14 1997-12-10 Philips Electronics Nv Space-limited marking structure for tracing garbage collectors
US6421690B1 (en) 1998-04-30 2002-07-16 Honeywell International Inc. Computer memory management system
GB9813266D0 (en) 1998-06-20 1998-08-19 Koninkl Philips Electronics Nv Stored data object marking for garbage collectors
GB9825102D0 (en) 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US6185107B1 (en) 1998-12-23 2001-02-06 Raytheon Company MEMS based tile assemblies and methods of fabrication
US6453463B1 (en) 1999-06-07 2002-09-17 Sun Microsystems, Inc. Method and apparatus for providing finer marking granularity for fields within objects
US6363403B1 (en) 1999-06-30 2002-03-26 Lucent Technologies Inc. Garbage collection in object oriented databases using transactional cyclic reference counting
US6502111B1 (en) 2000-07-31 2002-12-31 Microsoft Corporation Method and system for concurrent garbage collection
US6874074B1 (en) 2000-11-13 2005-03-29 Wind River Systems, Inc. System and method for memory reclamation
US6879991B2 (en) 2000-12-11 2005-04-12 International Business Machines Corporation Synchronous collection of cyclic garbage in reference counting systems
US6883172B1 (en) 2001-03-29 2005-04-19 Microsoft Corporation System and method for bridging managed and unmanaged object systems by utilizing an interface wrapper to facilitate transparent communications
US6662274B2 (en) 2001-06-20 2003-12-09 Intel Corporation Method for using cache prefetch feature to improve garbage collection algorithm
US6735680B2 (en) 2002-05-24 2004-05-11 Sun Microsystems, Inc. Method and apparatus for deleting objects from memory within a smart card
US7092978B2 (en) 2003-02-24 2006-08-15 Sun Microsystems, Inc. Space-efficient, depth-first parallel copying collection technique making use of work—stealing on the same structures that maintain the stack of items to be scanned
US7451168B1 (en) 2003-06-30 2008-11-11 Data Domain, Inc. Incremental garbage collection of data in a secondary storage
US7315873B2 (en) 2003-07-15 2008-01-01 International Business Machines Corporation Depth counter used to reduce number of items to consider for loop detection in a reference-counting storage reclamation program
US7251671B2 (en) 2004-03-26 2007-07-31 Intel Corporation Method and system for garbage collection wherein resetting the mark/allocation bit, and switching the mark/allocation bit to the mark bit to perform marking and scanning of objects using the identified object as a root object and providing mark/allocation bit information being displayed at the client
US7444484B2 (en) 2004-06-24 2008-10-28 International Business Machines Corporation Method and system for determining memory usage of a heap
US7631024B2 (en) 2006-01-03 2009-12-08 Sun Microsystems, Inc. Method and apparatus for facilitating mark-sweep garbage collection with reference counting
US7565386B2 (en) 2006-02-10 2009-07-21 Microsoft Corporation Reference-counting subsumption analysis
CN101046755B (zh) 2006-03-28 2011-06-15 郭明南 一种计算机自动内存管理的系统及方法
US7512745B2 (en) 2006-04-28 2009-03-31 International Business Machines Corporation Method for garbage collection in heterogeneous multiprocessor systems
US8589341B2 (en) 2006-12-04 2013-11-19 Sandisk Il Ltd. Incremental transparent file updating
US7987215B2 (en) * 2008-04-22 2011-07-26 Microsoft Corporation Efficiently marking objects with large reference sets
US8327109B2 (en) * 2010-03-02 2012-12-04 Advanced Micro Devices, Inc. GPU support for garbage collection
US8621150B2 (en) * 2010-04-09 2013-12-31 International Business Machines Corporation Data placement optimization using data context collected during garbage collection
US9053017B2 (en) 2011-09-09 2015-06-09 Microsoft Technology Licensing, Llc Managing object lifetime in a cyclic graph

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6182107B1 (en) * 1997-06-03 2001-01-30 Object Technology Licensing Corporation Management of reference object lifetimes in object oriented programs
JPH11232162A (ja) * 1998-02-19 1999-08-27 Fujitsu Ltd ガベージコレクション方法
WO2000057277A1 (en) * 1999-03-23 2000-09-28 Koninklijke Philips Electronics N.V. Memory reclamation method
JP2002540503A (ja) * 1999-03-23 2002-11-26 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ メモリ再利用方法
US20020129343A1 (en) * 2000-12-28 2002-09-12 International Business Machines Corporation Estimation of object lifetime using static analysis
JP2003050740A (ja) * 2001-05-29 2003-02-21 Matsushita Electric Ind Co Ltd ガベージコレクション装置及びガベージコレクション方法
US20030191783A1 (en) * 2002-04-03 2003-10-09 Sun Microsystems, Inc., A Delaware Corporation Fast lifetime analysis of objects in a garbage-collected system
WO2008134163A1 (en) * 2007-04-27 2008-11-06 Microsoft Corporation Managing object lifetime for native/managed peers
JP2010525490A (ja) * 2007-04-27 2010-07-22 マイクロソフト コーポレーション ネイティブピア/管理ピアに関するオブジェクト有効期間の管理

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019133666A (ja) * 2018-02-02 2019-08-08 三星電子株式会社Samsung Electronics Co.,Ltd. グラフィックプロセシングユニット上での機械学習トレーニングのためのメモリ管理方法及びシステム

Also Published As

Publication number Publication date
WO2013036701A3 (en) 2013-05-10
EP2754054A2 (en) 2014-07-16
US20150269196A1 (en) 2015-09-24
JP6087928B2 (ja) 2017-03-01
WO2013036701A2 (en) 2013-03-14
KR102074113B1 (ko) 2020-02-05
EP2754054B1 (en) 2018-06-27
KR20140059801A (ko) 2014-05-16
US9053017B2 (en) 2015-06-09
HK1183533A1 (zh) 2013-12-27
US9613073B2 (en) 2017-04-04
KR101983413B1 (ko) 2019-05-29
KR20190058706A (ko) 2019-05-29
CN102999328B (zh) 2016-02-24
CN102999328A (zh) 2013-03-27
US20130066927A1 (en) 2013-03-14
EP2754054A4 (en) 2015-02-11

Similar Documents

Publication Publication Date Title
JP6087928B2 (ja) 循環グラフにおけるオブジェクト寿命の管理
KR101357397B1 (ko) 데이터 프로세싱 시스템의 메모리 사용을 추적하는 방법
US8301671B1 (en) Method and apparatus providing removal of replicated objects based on garbage collection
CN108733507B (zh) 文件备份和恢复的方法和设备
US10073770B2 (en) Scheme for determining data object usage in a memory region
CN109597677B (zh) 用于处理信息的方法和装置
US20090024793A1 (en) Method and apparatus for managing data in a hybrid drive system
US20070067359A1 (en) Centralized system for versioned data synchronization
EP4116820A1 (en) Data recovery method and apparatus
US10915403B2 (en) Versioned records management using restart era
US10761936B2 (en) Versioned records management using restart era
JP5157537B2 (ja) メモリ管理装置、システム、方法、及び、プログラム
CN111488117A (zh) 用于管理元数据的方法、电子设备和计算机可读介质
CN113867628A (zh) 数据删除方法、装置、存储介质和计算设备
CN110704249A (zh) 一种保证应用一致性的方法、装置及系统
CN113535412B (zh) 用于跟踪锁的方法、设备和计算机程序产品
CN111625336B (zh) 线程数据处理方法及其装置
CN112988460B (zh) 一种虚拟机的数据备份方法及装置
US20210248108A1 (en) Asynchronous data synchronization and reconciliation
CN117056123A (zh) 数据恢复方法、装置、介质及电子设备

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150523

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150810

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150810

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160622

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160705

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161004

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: 20170104

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170202

R150 Certificate of patent or registration of utility model

Ref document number: 6087928

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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