JPH07507887A - ポストモーテム最終化方法 - Google Patents

ポストモーテム最終化方法

Info

Publication number
JPH07507887A
JPH07507887A JP5509474A JP50947492A JPH07507887A JP H07507887 A JPH07507887 A JP H07507887A JP 5509474 A JP5509474 A JP 5509474A JP 50947492 A JP50947492 A JP 50947492A JP H07507887 A JPH07507887 A JP H07507887A
Authority
JP
Japan
Prior art keywords
finalization
objects
finalization process
weak
garbage
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
JP5509474A
Other languages
English (en)
Inventor
ジャクソン、フランクリン・アール
ドイチ、エル・ピーター
シフマン、アラン・エム
アンガー、デイビッド
Original Assignee
パークプレイス・システムズ・インコーポレイテッド
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 パークプレイス・システムズ・インコーポレイテッド filed Critical パークプレイス・システムズ・インコーポレイテッド
Publication of JPH07507887A publication Critical patent/JPH07507887A/ja
Pending legal-status Critical Current

Links

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/90Details of database functions independent of the retrieved data types
    • G06F16/93Document management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2216/00Indexing scheme relating to additional aspects of information retrieval not explicitly covered by G06F16/00 and subgroups
    • G06F2216/09Obsolescence
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99956File allocation
    • Y10S707/99957Garbage collection

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Data Mining & Analysis (AREA)
  • Memory System (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるため要約のデータは記録されません。

Description

【発明の詳細な説明】 ポストモーテム最終化方法 失折分1 本発明はコンピュータンステムに関し、特に自動最終化方法に関する。
11挟蓑 序1 デジタルコンピュータに於ける自動記憶領域回復(storage recla mation)システムの主な目的は、当該回復システムのクライアントである コンピュータプログラムの適正な作動にとって既に不要となったメモリオブジェ クトにより占められたメモリを回復することにある。クライアントは通常、記憶 領域回復システムを用いたコンピュータプログラムを参照する。オブジェクトは 、コンピュータメモリの一部に対応するクライアントデータを参照する。
このように記憶領域回復システムは、ガーベジオブジェクトにより占められたメ モリ位置を回復する方法である。
ここで言うガーベジ(garbage)即ちゴミとは、既に不要となったメモリ オブジェクトを意味する。このようなメモリオブジェクトを回復する動作は通常 ガーベジコレクンコンと呼ばれ、ガーベジコレクタとは、既にガーベジとなった メモリオブジェクトにより占められたメモリを実際に回復する自動記憶領域回復 システムが実行する方法である。
自動記憶領域回復システムは、過去に、関連するオブジェクトを用いたプログラ ムからの直接的な指示を伴うことなく、このようなメモリを回復することができ る。しかしながら、メモリオブジェクトがガーベジオブジェクトとなったときに 、このようなメモリオブジェクトにより占められたメモリ領域を単に回復するこ とに加えて、しばしば何等かの最終的な動作成いは一連の動作をとる必要がある 。
最終化過程(f ina I i zat 1on)とは、メモリオブジェクト がガーベジとなったときに実行されなければならない一連の動作からなる。例え ば、ガーベジオブジェクトは、別のサブンステムにより管理される外部資源を参 照する場合がある。しかも、この外部サブシステムは、そのクライアントから、 この外部資源が既に不要となり、この外部資源をリサイクルし得るようになった という直接的な確認がクライアントから発せられるのを期待する場合がある。こ のような外部資源の例としては、コンピュータのオペレーティングシステムによ り管理されるファイル−システムオブジェクトや、コンピュータのウィンドウ管 理サブシステムによって用いられる様々な資源がある。
いつ 、 ゛ 0を ′−るか 最終化過程は、その定義からして、あるオブジェクトかガーベジであると決定さ れてはじめて実行されるべきものであるが、特定のガーベジオブジェクトに対し て正確にいつ最終化過程を実行するかについである程度問題がある。
最終化過程は、オブジェクトの死の直前(即ちオブジェクトが破壊され、どのプ ログラムによってもアクセス不可能となる前)に実行されるべきであり、或いは オブジェクトの死のある程度後まで最終化過程を延期することができる。
前者の最終化過程は、オブジェクトの復活を可能とし、したがって臨終儀式(I  as t−r i tes)最終化過程と呼ばれ、後者の形式の最終化過程は 、オブジェクトの復活が不可能であることから、ポストモーテム(postm。
rtem+死後)最終化過程と呼ばれる。
臨終 式最終し過 臨終儀式最終化過程は、オブジェクトがガーベジであると決定された後ではある が、このオブジェクトが実際に破壊される前に実行される最終化過程からなる。
この場合、最終化過程は、オブジェクトの「死の床」に於て行われる。
現在までに開発されたあらゆる公知の最終化システムは臨終儀式システムであっ た。このようなシステムの主な利点は、オブジェクトが回復(reclaim) されていない状態にあることから、−最終化過程の対象たるオブジェクトに含ま れるすべての情報が、最終化過程のコードによってアクセス可能である点にある 。しかも、このようなシステムは、別の生きたオブジェクトに、最終化過程の対 象たるオブジェクトに関するレファレンス(reference:参照)を記憶 するのみで最終化過程の対象とされるオブジェクトを復活することができる。
従来技術に基づく最終化過程システムは、手動最終化過程または自動最終化過程 システムのいずれかに分類することができる。計算環境のランタイムシステムが 、メモリオブジェクトがガーベジとなっても同等特定の動作を行うべく直接的な サポートを提供しないような場合には、クライアントプログラムがそのような動 作を行う責任を有する。
クライアントプログラムがこのような動作を明示的にとった場合、クライアント プログラムは、それが最終化過程を別の手動ステップとして実行するか、または オブジェクトかガーベジであるとして手動により指定された結果、最終化過程が 自動的に実行されるかを問わず、手動最終化過程を行うことになる。計算環境上 のランクイムサポートルーチンまたはオペレーティングシステムが、メモリオブ ジェクトかガーベジとなったかどうかを検出するための同等直接的なサポートま たは手段を提供しない場合には、クライアントプログラムに於て手動最終化過程 が必要である。自動最終化過程は、メモリオブジェクトがガーベジとなったとき に、計算環境によって自動的にトリガされるべき一連の動作をクライアントプロ グラムが特定し得るように計算環境に付加される最終化過程システムである。
自動最終化過程システムの一つの利点は、時期尚早に最終化過程を行ったり、最 終化過程を行うことが出来なかつた場合に発生するような一般的なプログラムエ ラーを減少させ得ることにある。このような事態が発生した場合には、不適正な 作動が行われたり、メモリ資源が浪費されたりする。自動最終化過程システムの もう一つの利点は、コンピュータプログラムを作成する作業が単純化される点に ある。
典型的な自動最終化過程システムのタイプとして、単語的視野(lexical  5cope)を以て或いは動的視野(dynamic 5cope)を以てオ ブジェクトを最終化するシステムがある。単語的視野を伴うオブジェクトとして は、その視野及びプログラムによってオブジェクトが必要とされる時間としての 寿命は、それらが詳しく説明(elaborate)される、即ち宣言され且つ 初期化されるプログラムエードのテキストから推定することができる。単語的な 視野を伴うオブジェクトは、通常システムのランクイムスタックに割り当てられ 、それらの寿命は、それらを詳しく説明する単語的視野から出たときに寿命が終 了する。動的な視野を伴うオブジェクトとしては、寿命に制限が課されていない ようなオブジェクトがある。
動的な視野を伴うオブジェクトの寿命は、オブジェクトがガーベジとなるときま で、一般的には別の非ガーベジオブジェクトにより参照されなくなるまで尽きる ことがない。
このようなオブジェクトは通常システムのデータヒープ(data heap) に割り当てられる。
悟・ を ゛オブジェクトの ゛ 単語的な視野を伴うオブジェクトの寿命が、それらを詳しく説明する単語的視野 を出るときに終了することがら、このようなオブジェクトの最終化過程をサポー トするために自動ガーベンコレクタの助けを必要としない。即ち、このようなオ ブジェクトは、その定義からして、その視野から出たときにオブジェクトがガー ベジであると考えられることから、その単語的視野をでる直前に最終化過程を行 うことができる。通常、言語のコンパイラが、このような最終化過程の実行の責 任者たる各単語的視野に機能を付加する。この最終化過程機能は、単語的視野を 出る直前に呼び出される。このような最終化過程は従来から知られていた。
江苅−吟Jξ野3ヒ伴二Yオニわン□王7 )”2Jf ′Iに基づくJ 従来の最終化過程の多くは、言語的な視野を伴うオブジェクトを最終化するため のものであった。O,J、Dahl、f3.Myhrhaug及びに、Nyga ardによる“The SIMULA 67 Common BaseLang uage+、Norwegian Computing Centre、For skningsveien IB、0slo、1968に於けるクラスや、Pa 5cal Plus(J、Welsh及びり、W、Bu s tardによる” Pa5ca 1−Plus −−Another Language for  Modular Pr。
gramming”、Software Practice and Expe rience、v、9、 No、11.1979.947−957)に於けるエ ンベロープは、これらのデータに対応するコードのブロックから出たときに実行 される最終化過程ルーチンをプログラマに特定させることができる。同様に、M asaaki Shimasaki、Yoshitoshi Kunieda及 びTakao Tsudaによる”Applications 。
f Modern Programming Language Concep t to Text Processing with a Large Ch aracter Set”、IFIP Congress 5erieS、19 83、v、9.107−112に於ては、パスカルプラスに於て利用されている ような最終化過程をモデルとした成る最終化過程の概念をサポートするPLAK (Programming Language with Abstract  data types for Kanj i Process ing)と呼 ばれるプログラム言語について記載されている。
Richard L、 Schwartz及びP、M。
Melliar−3mith、”The Finalization 0per ation for Abstract Types”、5th Intern ationlConference on Software Enginee ring、San Diego、CA、MarCh、1981に於ては、例外を 取り扱う際にも良く定義された単語的視野を伴う抽象的なデータの形式の最終化 過程のために詳しいセマンティック(semantic+意味論的)モデルが提 案されている。さらに最近では、Department of Defence 編、 Ada9X Project Report:DRAFT Mappin g Rationale Document”。
733 Concord Ave、MA 02138所在のIntermetr ics Inc、発行、February 1991に於いて、Schwart zらによる提案と同様に、単語的視野を伴うオブジェクトの最終化過程について 記載し、データの説明と逆の順序でデータの最終化過程を行うべきであるとして いる。最後に、Henry G、 Bakerによる”5tructured  Programming with Lim1ted Pr1vate Typ es in Ada:Nestingis for the Soaring  Eagles”、ACM Ada Letters XI、5、July /  A u g u s t 1991.79−90に於ては、Adaに於ける限定 されたプライベートなタイプの変数を、どのようにして、最終化し、この手法を 、Adaによりガーベジ回収されたLi5pシステムを実現するために用い得る かについて記載されている。
C++に於ては、Niargaret A、Ellis及びBjarne 5t roustrupによる”TheAnnotated c++ Referen ce Manual”、 Addison WesleyX Reading、 MA 1990.277−280に記載されているようなデストラクタ(des tructor)と呼ばれるルーチンにより単語的視野を伴うデータの最終化過 程が行われる。デストラクタルーチンによれば、プログラマは、オブジェクトの 各クラスについてデストラクタ機能を定義し、このデストラクタ機能は、各オブ ジェクトについての単語的視野を出るときに自動的に呼び出される。
しかしながら、Modula−3(Luca Cardelli、James  Donahue、LucilleGlassman、Mick Jordan、 BBlllKalso及びGreg Ne1sonによる”M。
dula−3report″、Tech、Rep、0RC−1、DECSyst ems Re5earch Centerlolivetti Re5earc h Center、Pa1o Alto、/Menlo Park。
CA、1988)或いはCommon Li5p(GuySteelによる+C ommon Li5p:TheLanguage”、Digital Pres sS BurIington、MA、1984.140−142)のいずれも最 終化過程のための正式なセマンティックスを定義していない。これらの言語が最 も自動最終化過程プロセスをサポートするように見える場面としては、Modu la−3に於けるTRY FINALLY構造及びCommon Li5pに於 けるUNWI ND−PROTECTアノアインドプロテクト構造である。これ らの手段のいずれも、対応する構造が関連するコードのブロックを(通常のプロ ソクターミネーンコンまたは非ローカルリターンを介して)出るときに所定の動 作のセットを実行することを保証するが、いずれもデータオブジェクトとは直接 的に関連しない。
動的 をイ・うオブジェクトの ヒ過呈動的視野を伴うオブジェクトの寿命には 制約がないことから、自動最終化過程をサポートするためには自動ガーベジコレ クタが必要となる。即ち、最終化過程は、ガーベジコレクタが、動的視野を伴う オブジェクトが実際にガーベジとなったことを検出するまで行われない。
動的視野を伴う自動最終化過程システムは、エンバーミング(cmba 1mi  ng)コレクタにより或いは弱いレファレンスにより構成することができる。
弱いレファレンスとは、参照されたオブジェクトがガーベジであると考慮される のを妨げないようなオブジェクトの参照を意味する。
弱い参照は、文献によっては、弱いポインタ、ソフトレファレンスまたはソフト ポインタとも呼ばれる。それに対して、強いレファレンスは、一連の強いレファ レンスを介して、参照されたオブジェクトがプログラムにより到達可能であると いうことを条件として、参照されたオブジェクトかガーベジであると考慮される のを妨げるのに十分なオブジェクトの参照を意味する。強いレファレンスは、文 献によっては、強いポインタ、ハードレファレンス、ハードポインタ、ノーマル レファレンス、ノーマルポインタ、普通レファレンス、普通ポインタなどとも呼 ばれる。即ち、ガーベジコレクタは、一連の強いレファレンスを介してプログラ ムが到達可能な任意のオブジェクトを回復することを許容されない。
エンバーミングコレクタを る 0 エンバーミングコレクタとは、そのメモリの領域を回復するためにオブジェクト を直接操作するようなコレクタを指す。従来技術に基づくエンバーミングコレク タの例としては、古典的なマークスウィープ(mark−sweep)ガーベジ コレクタや、厳密なレファレンスカウントに基づくさまざまなコレクタがある。
エンバーミングコレクタを る″に基づくCedar (Pau l Rovn erによる“On And Runtime Types to a Str。
ngly−Typed、5tatically−Checked、Concur rent Laguage″、Tech、Rep、C5L−84−7、Xero x、Pal。
AI to、 Re5earch CenterS Pal。
Alto、CA、1985)に於いては、動的視野を伴うオブジェクトの臨終儀 式最終化過程が、レファレンスカウントガーベジコレクタを用いて実現されてい る。即ち、オブジェクトのレファレンスのカウントがOに下がると、オブジェク トは最終化過程順列に配置され、その後最終化過程の対象とされる。Cedar のガーベジコレクタが、(参照されなかった全てのオブジェクトをガーベジとし て提出することを保証しないという意味で)保守的即ち控えめなものであること から、最終化過程が必ず発生するとは保証されない。従って、プログラマに対し ては、そのプログラムの正確さが最終化過程に依存するものであってはならない という警告がなされ、むしろ、最終化過程を、性能を高めるものであると理解す るように勧められている。
00PSLA ’91 Garbage Co11ect ion Works hopS PhoenixS AZ、1991に於いて発表された、Richa rd L、 Hudsonによる”Finalization in aGar bage Co11ected World”に於いては、Cedarのものと 類似する、動的な視野を伴うオブジェクトの臨終儀式式の最終化過程のためのセ マンティックスが提案されている。Hudsonは、最終化過程を、オブジェク トの破壊に先立つ最終的な動作であると見ている。しかも、Hudsonは、最 終化過程がオブジェクトを復活可能とし、その破壊を回避し、再びシステムの利 用に使用し得る点を指摘している。また、これらのセマンティックスが、コピー するコレクタを介して実現し得る要領を説明し、オブジェクトが最終化されるべ き順序を特定し、これらの最終化過程セマンティックスが、弱いレファレンスの それと連接が合うものであることを指摘している。
いレファレンス る ゛ 多くの近代的なガーベジコレクタは、それらが回復するガーベジオブジェクトを 直接的に操作しない。例えば、コピーを行うガーベジコレクタを用いるシステム を考慮されたい。このようなコレクタは、そのメモリ領域を回復するためにオブ ジェクトを操作することを必要としない。コレクタは、単にガーベジオブジェク トを無視し、生きたオブジェクトをメモリの別の領域にコピーする。次に、シス テムに対して、ガーベジオブジェクトを記憶したメモリの領域に新たなオブジェ クトを割当て、ガーベジオブジェクトをオーバライドすることによりガーベジオ ブジェクトをリサイクルする。
このようなコレクタは、最終化過程の対象となるオブジェクトの行方を常時追跡 し、そのオブジェクトがガーベジとなったときに最終化過程を実行するのを忘れ ないようにしなければならない。
このようなオブジェクトを常時追跡することは、オブジエクトに対して弱いレフ ァレンスを維持することと等価である。即ち、ガーベジコレクタは、成るオブジ ェクトをガーベジであると考慮されることを妨げないオブジェクトのレファレン スを維持する。実際、従来技術に基づくシステムの成るものは、その最終化過程 メカニズムを、弱いレファレンスサブシステム上に直接構築している。
弱−友佳1ヱヤンス奎介工A虞迷韮)に基づく1薯11−程Sun Micro systemsにより開発されたNcWs(Networked Window  System)は、動的な視野を伴うオブジェクトの最終化過程をサポートす るのみならず、弱いレファレンスサブシステムを用いることによりそれを実行す る。オブジェクトを最終化するためには、対応するオブジェクトに対して弱いレ ファレンスを確立し、このオブジェクトが弱くレファレンスされたときにのみ通 知を受ける興味を表すのみでよい。オブジェクトの強いレファレンスのカウント がOに下がり、しかしながら依然として弱いレファレンスがなされたままである 場合、N e W Sは、先に興味を表したクライアントに対して陳腐化したイ ベントを送り出すべくイベント発送メカニズムを用いる。
陳腐化したイベントを受けると、クライアントはオブジェクトに対する弱いレフ ァレンスを破壊することを含む適当な最終化過程を行い、それに対する他のレフ ァレンスがない場合には、オブジェクトが、最終的にガーベジコレクタにより回 復されるようになる。或いは、クライアントコードは、弱いレファレンスを強い レファレンスに変換することにより、陳腐化したオブジェクトを回復することに よって、陳腐化したイベントに応答することができる。 (Ne W Sは、与 えられたレファレンスを強化したり或いは弱化するためのプロトコルを提供スる 。)N e W S最終化過程メカニズムは、レファレンスカウントガーベジコ レクタにより、他の方法では回復されないようなオブジェクトのサイクルを破る ために設計されている。
クライアントコードは、このようなユーザにより定義されたデータサイクルのリ ンクの1つを弱化するものとして期待される。クライアントコードは、この弱い リンクによりレファレンスされたオブジェクトが陳腐化している旨の通知を受け た場合には、このリンクを実際に破る。 (即ち、オブジェクトは単に弱くレフ ァレンスされるのみとなる。)このリンクが一旦破られると、データサイクルが 破られ、ガーベジコレクタが、サイクルに於ける様々なオブジェクトにより占め られたメモリを回復し得るようになる。即ち、N e W Sシステムは、臨終 儀式最終化過程メカニズムをサポートするもので、この従来技術に於いては、な んらポストモーテム最終化過程メカニズムが存在していない。
しかしながら、 (オブジェクトが回復される前に、最終化過程の意図されない 副作用として或いはシステムの他の部分によってとられたアクションの結果とし て、最終化されるべきオブジェクトが生きたままにされることとなる、意図され ない復活がなされた場合には、臨終儀式最終化過程に問題が生しる。例えば、フ ァイル−システムオブジェクトが最終化される場合、その最終化過程コードは、 オペレーティングシステムに対して、対応するファイル記述子をリサイクルする ような指示を行う場合がある。しかしなから、ファイルシステムオブジェクトが 誤って生きたままにされると、このオブジェクトは後になってアクセスされる場 合があり、それによってアクセスを行おうとするコードが、新たにリサイクルさ れたファイル記述子を用いようとした場合に、基礎となるオペレーティングシス テムに於いてランタイムエラーが引き起こされる。従って、意図されない復活と いう問題を回避するという特定の目的で、ポストモーテム最終化過程に対する必 要性が存在する。
λ所(DJAU 本発明の開示内容によれば、ポストモーテム最終化過程メカニズムは、関心のあ るオブジェクトが破壊された後に初めて最終化過程の動作をトリガする。この手 法は、意図されない復活という問題を回避する。最終化コードは、最終化過程の 対象たるオブジェクトにアクセスできないことから、このようなコードは、最終 化過程にとって必要な、最終化過程の対象たるオブジェクトに含まれる情報のコ ピーを維持する。これは、例えば、予め最終化過程の対象たるオブジェクトに対 する相続人(heir)オブジェクトを創生ずることにより達成される。相続人 オブジェクトは、最終化過程に於いて必要とされる、最終化過程の対象たるオブ ジェクトからの全ての必要な情報のコピーを保持する。
この最終化過程の方法によれば、最終化過程の対象たるオブジェクトは、相続人 オブジェクトが、最終化オブジェクトの複製物であることを条件として、相続人 オブジェクトを最終化オブジェクトに単に置くことによりオブジェクトを効果的 に復活させることができる。
システムが、自動ガーベジコレクション、弱いレファレンス及び通知メカニズム をサポートする場合、ポストモーテム最終化過程システムは、通常のオブジェク トレファレンスとは異なる特定の値の陳腐な弱いレファレンスをオーバライドす るためのガーベジコレクションプロセス手段を含むことにより提供される。ガー ベジコレクションプロセスは、オーバライドされた弱いレファレンスを含む任意 のオブジェクトを最終化過程の順列に追加する。このようなオブジェクトが最終 化過程の順列に追加されると、ガーベジコレクタは、最終化過程順列か空でない ことを最終化過程プロセスに通知する。最終化過程順列が空でない通知を受ける と、最終化過程プロセスは、この順列から、これらのオブジェクトを抽出する。
更に、システムの通知手段を用いて、オーバライドされた弱いレファレンスに関 連するオブジェクトか回復されたときに通知を受ける旨の希望を先に示した任意 のオブジェクトに対して死亡証明を発行す区lばL証浬」らW朋 図1は、オブジェクトOを最終化するために、本発明に基づき構成されたポスト モーテム最終化過程システムにより必要とされるオブジェクト間の関係を示すブ ロック図である。
図2は、本発明のポストモーテム最終化システムをサポートするために本発明に 基づき構成されたガーベジコレクタエクステンンコンの1つの実施例を示すブロ ック図である。
図3は、図2のプロセスによりレファレンスされた最終化プロセスの1つの実施 例を示すブロック図である。
図4は、図3の執行人プロセスの1つの実施例を示すブロック図である。
及嵐桝Ω1泗 自動最終化過程メカニズムは、メモリオブジェクトがガーベジとなったことを確 認すると、所定の一連の動作を実行する。ポストモーテム最終化過程メカニズム は、ガーベジオブジェクトが、システムのガーベジコレクタにより実際に回復さ れた後にのみ、これらの最終化過程動作を実行する。関心のあるオブジェクトが 完全に回復されるときまで最終化過程の動作の実行を遅らせることにより、この オブジェクトが、最終化過程動作の副作用として意に反して復活される不都合を 回避することができる。単語的視野を伴うデータを最終化する場合には、このよ うに、意図されない復活という問題が引き起こされない。何故なら、このような データは、その定義から、これらのデータが詳しく説明される単語的視野から出 たときに破壊されるからである。このようにデータが既に破壊されていることか ら、閉じられた単語的視野から出た後には、このようなデータを最終化しようと する試みがなされないからである。
ポストモーテム 、。
図1は、本発明に基づき構成されたポストモーテム最終化過程システムにより必 要とされるオブジェクト間の関係を示すブロック図である。ポストモーテム最終 化過程メカニズムは、関心のあるオブジェクトが破壊された後に初めて最終化過 程動作をトリガするもので、従ってこのプロセスは、従来技術に於ける臨終儀式 最終化過程プロセスに於ける意図されない復活という問題を回避することができ る。
最終化過程コードが、最終化されるべきオブジェクトをアクセスすることができ ないことから、最終化過程に必要なオブジェクトOに含まれる情報のコピーが、 最終化されるオブジェクトに対する(図1に於いてHが付されたブロックにより 示される)相続人オブジェクトを予め創設しておくことにより創り出される。相 続人オブジェクトHは、最終化過程に必要とされるオブジェクト0の全ての必要 な情報のコピーを含んでいる。この最終化方法は、復活を許容しない。しかしな がら、必要に応じて、単にオブジェクトOが存在する先のメモリ位置に相続人オ ブジェクトHを送り込むことによりオブジェクト0を効果的に復活することがで きる。
C(″いレファレンスを いたポストモーテム A ゛ シスむ システムが、自動ガーベジコレクション、弱いレファレンス及び通知メカニズム をサポートする機能を有する場合、弱いレファレンスを用いて、本発明の原理に 基づくポストモーテム最終化過程システムの1つの実施例を提供することかでき る。例えば、オブジェクトO7,031,、,0,に対してポストモーテム最終 化過程動作F3、F2181.F。を実行するために、オブジェクトO2,0, 1,9,0,の何れかがガーベジとなった場合、クライアントプログラムにより 追加の弱いオブジェクトW1、W21.、、W、が形成され、この場合オブジェ クトW、は、全てのi (但し、1≦l≦n)についてオブジェクトO1に対す る弱いレファレンスを含んでいる。この場合、Olは、W、と整合(regis tered)していると呼ばれる。更に、クライアントは、執行人(execu tor)オブジェクトE1sE2%・・、Eoを構成する。但し、Eiは、全て のi (1≦i≦n)について最終化過程動作Fiを実現する最終化過程コード にアクセスすることができる。最終化過程のために必要とされる全ての情報のコ ピーを含むクライアントにより創り出された相続人オブジェクトH5は、執行人 E、によりアクセスすることができる。更に%Elは、Wlが死ぬ度毎に(即ち 、W、から弱くレファレンスされたオブジェクトがガーベジコレクタにより回復 される度毎に)通知を受け取るように、通知メカニズムに対して登録しておくこ とができる。通知メカニズムは、成る所定のイベントが発生した旨の通知を受け ることに関心があるとしてクライアントが登録し得るような任意の手段に対して レファレンスすることかできる。このような通知メカニズムを実現する態様には 様々なものがある。例えば、そのようなシステムとしては、Adele Gol dberg及びDavid RobsOnによる’Smalltalk−80: The Lanuage”、Addison Wesley、Reading、 MA、1989.240−243に記載されているようなSmalltalkの 依存度更新(d e p e n d ency−updat ing)メカニ ズムや、NeWS(−NeWS 2.1 Programmer’ s Gui de、Revision A−1Sun Microsystems、Inc、 Mountain View、CA。
1990.221−225)に於いて用いられているような様々なイベント送信 メカニズムがある。
図2は、本発明のポストモーテム最終化過程システムをサポートするための、本 発明の原理に基づいて構成されたガーベジコレクタエクステンションの1つの実 施例を示すブロック図である。ガーベジコレクションプロセスが、オブジェクト O2がガーベジとなったことを確認すると、ガーベジコレクションプロセスは、 OIにより占められたメモリを回復し、WIからOlへの弱いレファレンスを、 死亡マーカレファレンスDMにより置換し、それを他の全ての通常Qオブジェク トレファレンスから区別する。
最終化過程をサポートするために、ガーベジコレクションプロセスは、各回復フ ェーズの末期に、死亡マーカレファレンスDMによりオーバライドされた弱いレ ファレンスを有する全ての弱いオブジェクトW、を、最終化過程順列FQに配置 する。このような弱いオブジェクトWlを全て最終化過程順列FQに配置すると 、ガーベジコレクタは、最終化過程順列FQが空でない旨を、最終化過程FPに 対して通知する。図3は、各オブジェクトを最終化過程順列FQから除去し、抽 出されたオブジェクトW1が死亡した旨の死亡証明通知を受けることに興味を示 したE、などのオブジェクトに対してシステムの通知メカニズムが通知を行うよ うに(−た最終化過程の一実施例を示す。
E、が、Wlか死亡した場合にその通知を受けるべく要請していれば、E、は、 Wlが最終化過程順列から抽出されたときに死亡証明通知を受け取ることとなる 。
同一の〜V、が複数のO2をレファレンスした場合、執行人E、は、レファレン スDMをめてWlの内容をスキャンすることにより死亡証明の受領に応答し、オ ブジェクトO7が回復されたことを、DMの位置から推察することができる。
W、が1つの弱いレファレンスを有するのみである場合、執行人E、は、走査す ることなく、どのO2が回復されたかを、W、を特定することにより推察するこ とができる。
図4は、オブジェクトO1が回復したか否かを推察するために、死亡マーカレフ ァレンスDMをめて必要に応じてW、をスキャンする最終化過程コードの]っの 実施例を示す。
オブジェクトO1の回復が検出されると、E、は、適当な最終化過程動作F、を 呼び出すことができる。
も−在工午1え2361ヤ35色Uリー川本発明の別の実施例に於いては、シス テムが、エムバーミング(embalming)ガーベジコレクション及び通知 メカニズムを有する場合、ガーベジコレクタかガーベジオブジェクトを回復する ときに、オブジェクトが最終化過程の対象にされているか否かを見るためのエム バーミングガーベジコレクタチェックを備えることにより、ポストモーテム最終 化過程プロセスを提供することができる。この実施例に於いては、ポストモーテ ム最終化過程プロセスは、この目的のために保留されたオブジェクトのヘッダに 於けるビットなどにより、成るオブジェクトが最終化過程の対象であることを示 すための手段をガーベジコレクションシステムが備えているものと仮定する。一 旦ガーベジコレクタが、オブジェクトが最終化されるべきものであると判断する と、ガーベジコレクタは、オブジェクトが死亡し、最終化されるべき旨を執行人 に対して通知する。
このように、本発明の原理に基づき記述された自動ポストモーテムメモリ最終化 過程プロセスは、ガーベジとして最終的にマークされたオブジェクトがガーベジ コレクタによって破壊された後に最終化過程の動作を呼び出すことにより意図し ない復活という問題を回避する。
本明細書に於いて言及された全ての刊行物は、それぞれ、個々の刊行物に対して 言及することにより本明細書の1部となすという意味合いに於いて、全体として 、言及することにより本明細書の1部をなすものとする。
以−に本発明について説明したが、当業者であれば、本発明の概念即ち添付のク レームの範囲から逸脱することなく様々な変更及び修正を加え得ることは明かで ある。
補正書の翻訳文提出書 (特許法第184条の8) 平成6年5月20日

Claims (4)

    【特許請求の範囲】
  1. 1.ガーベジコレクション手順により処理された1つまたは複数の回復されたオ ブジェクトのために所定の最終化過程動作を自動的に引き起こすような自動ポス トモーテム最終化方法であって、 1組の関連するオブジェクトを前記ポストモーテム最終化過程に対して提供する 過程を有し、 前記1組の関連するオブジェクトが、 最終化されるべき関連するオブジェクトに於ける少なくとも何らかの情報を複写 する1つまたは複数の相続人オブジェクトと、 弱いオブジェクトを、最終化されるべき関連する前記オブジェクトに対して関連 づける1つまたは複数の弱いレファレンスを有する1つまたは複数の弱いオブジ ェクトと、最終化されるべき前記関連するオブジェクトの破壊についての通知を 受けるべく通知手段に登録された1つまたは複数の執行人オブジェクトとを有し 、 前記方法が、更に、 前記した1つまたは複数の回復されたオブジェクトを検出するべく前記弱いオブ ジェクトのそれぞれに於ける1つまたは複数の弱いレファレンスを走査する過程 と、前記した1つまたは複数の回復されたオブジェクトに関連する各弱いレファ レンスを、死亡マーカレファレンスによりオーバライトする過程と、 死亡マーカレファレンスに対応する前記弱いオブジェクトを最終化過程順列に置 く過程と、 前記最終化過程順列が空でないことを最終化過程プロセス手順に通知する過程と 、 前記最終化過程を実行する過程とを有し、前記最終化方法が更に、前記最終化過 程順列から弱いオブジェクトを抽出する過程と、 システム通知手段を呼び出す過程とを有し、前記システム通知手段が、前記1つ または複数の回復されたオブジェクトが前記ガーベジコレクション手順により回 復された旨の通知を受けることについての興味を示す前記1つまたは複数の執行 人オブジェクトに対して通知を提供することを特徴とする方法。
  2. 2.前記最終化方法が、1つまたは榎数の最終動作を呼び出すために執行人最終 化過程手順を実行する過程を有することを特徴とする請求項1に記載の方法。
  3. 3.ガーベジコレクション手順により処理された1つまたは複数の回復されたオ ブジェクトのために所定の最終化過程動作を自動的に引き起こすような自動ポス トモーテム最終化方法であって、 1組の関連するオブジェクトを前記ポストモーテム最終化過程に対して提供する 過程を有し、 前記1組の関連するオブジェクトが、 最終化されるべき関連するオブジェクトに於ける少なくとも何らかの情報を復写 する1つまたは榎数の相続人オブジェクトと、 最終化されるべき前記関連するオブジェクトの破壊についての通知を受けるべく 通知手段に登録された1つまたは複数の執行人オブジェクトとを有し、 前記方法が、更に、 最終化されるべき少なくとも1つまたは複数の回復されたオブジェクトのそれぞ れに関連する留保ビットを分析する過程と、 システム通知手段を呼び出す過程とを有し、前記システム通知手段が、前記1つ または複数の回復されたオブジェクトが前記ガーベジコレクション手順により回 復された旨の通知を受けることについての興味を示す前記1つまたは複数の執行 人オブジェクトに対して通知を提供することを特徴とする方法。
  4. 4.前記最終化方法が、1つまたは複数の最終動作を呼び出すために執行人最終 化過程手順を実行する過程を有することを特徴とする請求項3に記載の方法。
JP5509474A 1991-11-20 1992-11-19 ポストモーテム最終化方法 Pending JPH07507887A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US07/796,072 US5274804A (en) 1991-11-20 1991-11-20 Automatic storage-reclamation postmortem finalization process
US796,072 1991-11-20
PCT/US1992/009903 WO1993010504A1 (en) 1991-11-20 1992-11-19 Postmortem finalization

Publications (1)

Publication Number Publication Date
JPH07507887A true JPH07507887A (ja) 1995-08-31

Family

ID=25167202

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5509474A Pending JPH07507887A (ja) 1991-11-20 1992-11-19 ポストモーテム最終化方法

Country Status (5)

Country Link
US (1) US5274804A (ja)
EP (1) EP0642686A1 (ja)
JP (1) JPH07507887A (ja)
CA (1) CA2123994A1 (ja)
WO (1) WO1993010504A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002506253A (ja) * 1998-03-03 2002-02-26 ゲオデジック システムズ インク. リソースの透過的なガーベッジ・コレクション
JP2010525490A (ja) * 2007-04-27 2010-07-22 マイクロソフト コーポレーション ネイティブピア/管理ピアに関するオブジェクト有効期間の管理

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5485613A (en) * 1991-08-27 1996-01-16 At&T Corp. Method for automatic memory reclamation for object-oriented systems with real-time constraints
US5398334A (en) * 1992-04-06 1995-03-14 General Electric Company System for automatic garbage collection using strong and weak encapsulated pointers
GB2269033A (en) * 1992-07-22 1994-01-26 Ibm Controlling data storage to enable garbage collection
US5432924A (en) * 1993-12-15 1995-07-11 Microsoft Corporation Method and system for selectively applying an appropriate object ownership model
US6138202A (en) * 1994-01-04 2000-10-24 Iowa State University Research Foundation, Inc. Object space manager circuit for obtaining addresses of object headers
JPH086843A (ja) * 1994-06-23 1996-01-12 Fujitsu Ltd 半導体記憶装置
US6571262B2 (en) 2000-02-14 2003-05-27 Apple Computer, Inc. Transparent local and distributed memory management system
US5687370A (en) * 1995-01-31 1997-11-11 Next Software, Inc. Transparent local and distributed memory management system
US5765174A (en) * 1995-10-06 1998-06-09 Sun Microsystems, Inc. System amd method for distributed object resource management
US6728895B1 (en) * 1995-12-01 2004-04-27 Silicon Graphics, Inc. System and method for resource recovery in a distributed system
US5673382A (en) * 1996-05-30 1997-09-30 International Business Machines Corporation Automated management of off-site storage volumes for disaster recovery
US5819299A (en) * 1996-06-06 1998-10-06 Electric Communities Process for distributed garbage collection
US6035396A (en) * 1996-07-01 2000-03-07 Iomega Corporation Method for sharing a storage medium between computers having disparate operating systems
US6047295A (en) * 1998-05-05 2000-04-04 International Business Machines Corporation Computer system, program product and method of managing weak references with a concurrent mark sweep collector
US6138127A (en) * 1998-05-19 2000-10-24 International Business Machines Corporation Apparatus and method for recycling an object
GB9813266D0 (en) * 1998-06-20 1998-08-19 Koninkl Philips Electronics Nv Stored data object marking for garbage collectors
GB9813264D0 (en) * 1998-06-20 1998-08-19 Koninkl Philips Electronics Nv Finalisation in incremental garbage collection
US6275985B1 (en) 1998-12-17 2001-08-14 Sun Microsystems, Inc Method and apparatus for developing an application that implements garbage collection efficiently by combining proxy objects with compiler support
GB9907283D0 (en) * 1999-03-31 1999-05-26 Koninkl Philips Electronics Nv Memory reclamation method
US6324550B1 (en) * 1999-08-25 2001-11-27 Bullant Technology Pty Ltd Data object identification and removal system
US6681385B1 (en) * 1999-10-07 2004-01-20 Microsoft Corporation Method and apparatus for determining the relationships and useful lifetime of objects in a program
US6823351B1 (en) * 2000-05-15 2004-11-23 Sun Microsystems, Inc. Work-stealing queues for parallel garbage collection
US7203756B2 (en) * 2001-04-27 2007-04-10 International Business Machines Corporation Mechanism to cache references to Java RMI remote objects implementing the unreferenced interface
US6934741B2 (en) * 2001-06-27 2005-08-23 Sun Microsystems, Inc. Globally distributed load balancing
US7103887B2 (en) * 2001-06-27 2006-09-05 Sun Microsystems, Inc. Load-balancing queues employing LIFO/FIFO work stealing
JP2005521133A (ja) * 2002-03-20 2005-07-14 リサーチ イン モーション リミテッド 移動装置における機密保護ガーベージコレクション・システムおよび方法
US20060143256A1 (en) 2004-12-28 2006-06-29 Galin Galchev Cache region concept
US8204931B2 (en) 2004-12-28 2012-06-19 Sap Ag Session management within a multi-tiered enterprise network
US8015561B2 (en) * 2004-12-28 2011-09-06 Sap Ag System and method for managing memory of Java session objects
JP4144885B2 (ja) * 2004-12-28 2008-09-03 インターナショナル・ビジネス・マシーンズ・コーポレーション アプリケーション・オブジェクトの再利用方法
US8281014B2 (en) * 2004-12-28 2012-10-02 Sap Ag Session lifecycle management within a multi-tiered enterprise network
US8762547B2 (en) 2005-04-29 2014-06-24 Sap Ag Shared memory implementations for session data within a multi-tiered enterprise network
US7853698B2 (en) 2005-04-29 2010-12-14 Sap Ag Internal persistence of session state information
US7761435B2 (en) * 2005-04-29 2010-07-20 Sap Ag External persistence of session state information
US8589562B2 (en) 2005-04-29 2013-11-19 Sap Ag Flexible failover configuration
US8024566B2 (en) 2005-04-29 2011-09-20 Sap Ag Persistent storage implementations for session data within a multi-tiered enterprise network
US20060248283A1 (en) * 2005-04-29 2006-11-02 Galin Galchev System and method for monitoring threads in a clustered server architecture
US8914324B1 (en) 2009-10-16 2014-12-16 Symantec Corporation De-duplication storage system with improved reference update efficiency
US20120066270A1 (en) * 2010-09-13 2012-03-15 Alelo, Inc. Automated memory management of indexed data using weak references
GB2502076A (en) 2012-05-15 2013-11-20 Ibm Managing memory in a computer system
US10275397B2 (en) 2013-02-22 2019-04-30 Veritas Technologies Llc Deduplication storage system with efficient reference updating and space reclamation
US9747088B2 (en) 2013-04-22 2017-08-29 Embarcadero Technologies, Inc. Automatic reference counting
US9223690B2 (en) 2013-10-04 2015-12-29 Sybase, Inc. Freeing memory safely with low performance overhead in a concurrent environment
US10437720B2 (en) 2014-03-12 2019-10-08 Optumsoft, Inc. Deferred destruction for efficient resource reclamation
US10089235B1 (en) 2017-07-28 2018-10-02 Citrix Systems, Inc. Dynamic trim processing with disk caching

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0677237B2 (ja) * 1982-07-08 1994-09-28 キヤノン株式会社 電子ファイル装置
US4853842A (en) * 1985-09-11 1989-08-01 Texas Instruments Incorporated Computer memory system having persistent objects
US4714992A (en) * 1985-11-26 1987-12-22 International Business Machines Corporation Communication for version management in a distributed information service
US5107419A (en) * 1987-12-23 1992-04-21 International Business Machines Corporation Method of assigning retention and deletion criteria to electronic documents stored in an interactive information handling system
US4899299A (en) * 1987-12-23 1990-02-06 International Business Machines Corporation Method for managing the retention of electronic documents in an interactive information handling system

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002506253A (ja) * 1998-03-03 2002-02-26 ゲオデジック システムズ インク. リソースの透過的なガーベッジ・コレクション
JP2010525490A (ja) * 2007-04-27 2010-07-22 マイクロソフト コーポレーション ネイティブピア/管理ピアに関するオブジェクト有効期間の管理
US9785549B2 (en) 2007-04-27 2017-10-10 Microsoft Technology Licensing, Llc Managing object lifetime for native/managed peers

Also Published As

Publication number Publication date
US5274804A (en) 1993-12-28
CA2123994A1 (en) 1993-05-27
WO1993010504A1 (en) 1993-05-27
EP0642686A1 (en) 1995-03-15
EP0642686A4 (en) 1994-11-07

Similar Documents

Publication Publication Date Title
JPH07507887A (ja) ポストモーテム最終化方法
Herlihy A quorum-consensus replication method for abstract data types
US6539453B1 (en) Storage system including means for management of a memory with anti-attrition, and process of anti-attrition management of a memory
TWI412945B (zh) 擷取以及保存來自或存至關聯資料庫之各物件的方法及系統
US4949251A (en) Exactly-once semantics in a TP queuing system
US7533138B1 (en) Practical lock-free doubly-linked list
EP0351387A2 (en) Minimizing locking and reading in a segmented storage space
US7254592B1 (en) Method and arrangement for performing atomic updates using a logical flash memory device
US7249235B2 (en) Architecture for a scalable and user-extensible heap dump analysis tool
CN101689138B (zh) 处理嵌套事务的错误地破坏的父事务
JPH0560617B2 (ja)
JPH0642204B2 (ja) 待ち行列又はスタックから要素を除去する方法
US7451434B1 (en) Programming with shared objects in a shared memory
JP4806168B2 (ja) テーブルに対して行われる変更を識別する識別方法及びそのシステム
US6195709B1 (en) Method of providing persistency for transient objects in object oriented technology
EP1510933B1 (en) Propagating of database modifications
CN107784055A (zh) 基于非关系型数据库的事务处理方法和装置
CN112698866B (zh) 一种基于Git的代码行生命周期追溯方法及电子装置
US6684226B1 (en) Method for storing data in one or more files so that both previous and new versions of the data are separately accessible
US6668257B1 (en) Migrating non-persistent objects when one or more of the superclass fields of the object are modified
KR101583716B1 (ko) 비트 로깅을 이용한 데이터 복구 방법 및 그 장치
US20050268053A1 (en) Architecture for a scalable heap analysis tool
CN109359085A (zh) 文件迁移方法、装置、计算机设备及存储介质
CN113986974A (zh) 一种数据库事务管理方法及装置、恢复方法及装置
Attiya et al. Tracking in order to recover: Recoverable lock-free data structures