JP2002541552A - メモリ再利用方法 - Google Patents

メモリ再利用方法

Info

Publication number
JP2002541552A
JP2002541552A JP2000609893A JP2000609893A JP2002541552A JP 2002541552 A JP2002541552 A JP 2002541552A JP 2000609893 A JP2000609893 A JP 2000609893A JP 2000609893 A JP2000609893 A JP 2000609893A JP 2002541552 A JP2002541552 A JP 2002541552A
Authority
JP
Japan
Prior art keywords
data
finalizer
objects
garbage
data structure
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.)
Withdrawn
Application number
JP2000609893A
Other languages
English (en)
Inventor
スティーブン モーリス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Koninklijke Philips NV
Original Assignee
Philips Electronics NV
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 Philips Electronics NV filed Critical Philips Electronics NV
Publication of JP2002541552A publication Critical patent/JP2002541552A/ja
Withdrawn 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
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • 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)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 ポインタを特定することでリンクされるデータオブジェクトを有するデータ構造に配されるメモリ空間を再利用する方法及び装置である。アクティブデータオブジェクトを特定し、マークするためにデータ構造をトラバースするステップ、前のサイクル中にガーベッジとしてマークされたデータオブジェクトを消去するステップ、ガーベッジほどアクティブにマークされないデータオブジェクトをマークするステップ、及びファイナライザを持つガーベッジとしてマークされた如何なるデータオブジェクトのファイナライザをも実施するステップと含む反復性サイクルが実行される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】
本発明は、記憶されたデータオブジェクトを扱う方法及び装置、特に、排他的
ではないが、メモリ圧縮(memory compaction)におけるオブジェクトに対するフ
ァイナリゼイション(finalisation)及びデータ処理装置の実又は仮想メモリ空間
においてリアルタイムで実施するガーベッジコレクション手順(garbage collect
ion procedure)の取り扱いに関する。
【0002】 ガーベッジコレクションは、プログラムによってそれを最後に使用した後の、
システムメモリ空間の自動再利用である。ガーベッジコレクション技術の多くの
実施例は、R. Jones他著、"Garbage Collection: Algorithms for Automatic Dy
namic Management" John Wiley & Sons 1996, ISBN 0-471-94148-4の1から18
頁に記載されている。多くのコンピュータプログラムの記憶要件は、簡単及び予
測可能であるのに対し、プログラマ又はコンパイラにより扱われるメモリ配置及
びリカバリーに関し、特定のデータ構造のライフタイムがもはや実行時より前に
決定できず、故にプログラムを実行するようなこの記憶装置の自動再利用は必要
不可欠なので、より複雑な実施のパターンを持つ機能言語へ向かう傾向がある。
【0003】 ファイナリゼーションは、Sun MicrosystemのJava 7及びModula-3及びCedarの
ような他の現在の(Sun Microsystemの商標であるJavaでの)ガーベッジコレク
ション言語並びにプログラム環境に使用される概念である。プログラム処理によ
って作られる記憶されたデータオブジェクトは、このプログラム処理の実施中の
ある点においてもはや必要とされない。不必要なデータオブジェクトは、前記環
境のガーベッジコレクタによって検出され、ガーベッジとマークされるので、前
記データオブジェクトで占められたメモリが再利用される。データオブジェクト
は、前記オブジェクトがガーベッジとして検出された後であるが、前記データオ
ブジェクトで占められたメモリが再利用される前に実施すべき関連するファイナ
ライザを持つ。この特徴の目的は、オブジェクトにこのオブジェクトが破壊され
る前に要求した如何なるシステムリソースをもきれいにすることを可能にするこ
とである。例えば、Java Fileオブジェクトに対するファイナライザは、前記オ
ブジェクトにより保持される全てのシステムファイルハンドルを閉じる。
【0004】 しかしながら、ファイナライザは、他のプログラム手順の全てのパワーにおい
て、データオブジェクトと関連するプログラム手順の単なる特定形式であるから
、前記ファイナライザ手順は、ファイナライズされたオブジェクトからアクセス
可能な全てのデータオブジェクトにアクセスし、操作可能となる。これにより、
ファイナライザによりアクセス可能な全てのオブジェクト、例えば、前記データ
オブジェクトにより保持される参照ポインタからアクセス可能な下位オブジェク
トは、ガーベッジコレクションから明確に排除されなければならない。その上、
前記ファイナライザ方法は、前記プログラム処理によりオブジェクトを再びアク
セス可能にすることでそれ自体をファイナライズするオブジェクトを含むファイ
ナライザによってアクセス可能な如何なる上記オブジェクトをも復活可能にする
。結果的に、ガーベッジコレクション手順は、それのファイナライザが実施され
、前記オブジェクトのアクセス可能性(accessbility)が再評価されるまで、ファ
イナライズ可能オブジェクトによってアクセス可能である如何なるオブジェクト
をも消去できなくする。Java及び他の言語において、それ自体を繰り返し復活す
るオブジェクトの可能性は、各事例に対するファイナライザが一度だけ実施され
る状態にすることて典型的には取り除かれる。ファイナリゼイション(finalisat
ion)に関するこの制御がここで仮定されるだろう。
【0005】 PC又はワークステーションにおいて、ファイナリゼイションをサポートする
外部処理及びメモリロードは、前記サポートが、勿論、全体の効果に影響しても
、PCに典型的に使用可能なメモリ量が原因となる問題とは通常ではありえない
。しかしながら、例えばセットトップボックスのような低いメモリ環境において
、ファイナライザに対するサポートは問題を生じ、さらに並行又はインクリメン
タルガーベッジコレクタは、それが目立つファイナライザの幾つか又は全てを実
施し、これらが使用した如何なるメモリを再利用するまで、前記プログラムを停
止しなければならない。
【0006】 従来のマークスウィープ(mark-sweep)ガーベッジコレクタにおいて、スウィー
プフェーズは、マークフェーズが終了した後にのみ実施される。これにより、マ
ークされないオブジェクト(unmarked object)だけが、前記マークフェーズが全
てのアクティブデータ構造を完全にトラバース(traverse)したので、前記スウィ
ープ中にガーベッジとして安全に扱われる。マークフェーズ及びスウィープフェ
ーズは、並行に実施されるので、上記コレクタは、すぐに働かない。
【0007】 本発明の1つの特徴によると、ポインタを特定することでリンクされるデータ
オブジェクトを有するデータ構造に配されるメモリ空間を再利用する方法が提供
され、これは、アクティブデータオブジェクトを特定し、マークするデータ構造
をトラバースするステップ、前のサイクル中にガーベッジとしてマークされたデ
ータオブジェクトを消去するステップ、ガーベッジほどアクティブにはマークさ
れないデータオブジェクトをマークするステップ、及びファイナライザを持つガ
ーベッジとしてマークされる如何なるデータオブジェクトのファイナライザをも
実施するステップの反復性サイクルを有する方法である。
【0008】 本発明の方法及び装置は、ガーベッジオブジェクトを明瞭にマークすることで
並行に実施すべきマーキング及びスウィーピングを許容する。あるスウィープフ
ェーズにおいてガーベッジとしてオブジェクトをマークし、次のフェーズにおい
てこれらオブジェクトを再利用することで、オブジェクトの消去は、前記マーキ
ングフェーズから完全に分離される。よって、メモリは、ガーベッジコレクショ
ンの効率を向上する、生のオブジェクトをマークすることで並行に再利用される
【0009】 ファイナライザを持つガーベッジとしてマークされる如何なるデータオブジェ
クトのファイナライザをも実施するステップは、実施すべき各ファイナライザを
キュー(queue)に入れ、キューに入れられた各ファイナライザを順番に実施する
ステップを有し、アクティブデータ構造を特定し、マークするためのデータ構造
をトラバースするこのステップは、実施するようにキューに入れられたファイナ
ライザを持つ各オブジェクトのデータ構造をトラバースし、それ及びそれの下位
オブジェクトをアクティブとしてマークするステップを含む。
【0010】 第1マーク及び第2マークは、オブジェクトをガーベッジとマークするために
、交互サイクルに使用され、現在のサイクルに使用されるオブジェクトに対する
前記交互マークを持つデータオブジェクトは消去される。
【0011】 実施されないファイナライザを持つデータオブジェクトの総数は、ファイナラ
イザを持つアクティブデータ構造のデータオブジェクトの総数と比較され、前記
総数が等しい場合、アクティブとマークされないオブジェクトの全ては消去され
る。
【0012】 本発明の方法及び装置は、できるだけ早くガーベッジ及びファイナライズ可能
オブジェクトに配されるメモリを効率よく再利用する。
【0013】 実施するためキューに入れるべきファイナライザを持つデータオブジェクトに
対応するデータ構造は、実施するためキューに入れられるファイナライザも持つ
データ構造の他のデータオブジェクトを見つけるために処理され、他のデータオ
ブジェクトが前記データ構造の如何なる階層においても高い場合、ファイナライ
ザは、他のデータオブジェクトに対するファイナライザの後に実施するためキュ
ーに入れられ、さもなければ、前記データオブジェクトが他のデータオブジェク
トよりもデータ構造の如何なる階層においても高い場合、ファイナライザは、他
のオブジェクトに対するファイナライザの前に実施するためキューに入れられる
【0014】 本発明の他の特徴に従って、ポインタを特定することでリンクされるデータオ
ブジェクトを有するデータ構造を含むランダムアクセスメモリと結合されるデー
タ処理器を有するデータ処理装置を提供し、この処理器は、記憶される複数のデ
ータオブジェクトで動作する反復性サイクルにおいて、アクティブデータオブジ
ェクトを特定し、マークする前記データ構造をトラバースする手段、前のサイク
ル中にガーベッジとしてマークされたデータオブジェクトを消去する手段、ガー
ベッジほどアクティブにマークされないデータオブジェクトをマークする手段、
及びファイナライザを持つガーベッジとしてマークされる如何なるデータオブジ
ェクトのファイナライザをも実施する手段を供給するように構築される。
【0015】 ファイナライザを持つガーベッジとしてマークされる如何なるデータオブジェ
クトのファイナライザをも実施する手段は、実施するように各ファイナライザを
キューに入れ、キューに入れられた各ファイナライザを順番に実施する手段を有
し、アクティブデータ構造を特定し、マークする前記データ構造をトラバースす
る手段は、実施するようにキューに入れられたファイナライザを持つ各オブジェ
クトのデータ構造をトラバースし、それ及びそれの下位オブジェクトをアクティ
ブとしてマークする手段を含む。
【0016】 前記データ処理装置は、実施されないファイナライザを持つデータオブジェク
トの総数を得る手段、及びこの総数とファイナライザを持つアクティブデータ構
造のデータオブジェクトの総数とを比較する手段を含み、前記総数が等しい場合
、アクティブとマークされなかったオブジェクト全てを消去する。
【0017】 前記データ処理装置は、実施するためキューに入れられるファイナライザも持
つデータ構造の他のデータオブジェクトを見つけるために、実施するためキュー
に入れるべきファイナライザを持つデータオブジェクトに対応するデータ構造を
処理する手段と、前記キューにファイナライザを挿入する手段とを含み、前記他
のデータオブジェクトが前記データ構造の如何なる階層においても高い場合、フ
ァイナライザは他のデータオブジェクトに対するファイナライザの後に挿入され
、前記データオブジェクトが前記他のデータオブジェクトより如何なるデータ構
造の階層においても高い場合、ファイナライザは、前記他のオブジェクトに対す
るファイナライザより前に挿入される。
【0018】
【発明の実施の形態】
本発明を添付する図面を参照し、例を用いて説明する。
【0019】 図1は、例えばパーソナルコンピュータのようなデータ処理システムを示し、
このシステムは、仮想環境を規定するデータに対するブラウザ(broeser)として
このシステムを構築する多数のソフトウェアユーティリティーに対するホストと
して働く。このシステムは、アドレス及びデータバス12を介して、ランダムア
クセスメモリ(RAM)14及びリードオンリーメモリ(ROM)16に結合さ
れる中央処理ユニット(CPU)10を有する。これらメモリは、1つ又は幾つ
かの集積回路装置で構成されてもよく、システムハードディスク及び付加的(脱
着可能)なメモリ装置、例えばCD−ROMから読み出される手段によって増補
されてもよい。キーボード及びマウス又はトラックボールのようなカーソル制御
並びに選択装置を適切に有する第1及び第2ユーザ入力装置18、20もまたバ
ス12を介してCPU12に結合されている。このシステムからの音声出力は、
音声処理段階24により駆動する1つ以上のスピーカ22を介する。このシステ
ムからのビデオ出力は、CPU10の制御下における表示ドライバ段階28によ
り駆動する表示スクリーン26上に示される。このシステムに対する更なるデー
タ源は、オンラインリンクを介し離れたサイト、例えばインターネットを介して
であり、この端部に対し、このシステムはバス12に結合されたネットワークイ
ンタフェース30を具備する。
【0020】 本発明は、CPU10の制御下におけるRAM14の作業エリアに対するメモ
リ管理で特に例示される。これに関する制御プログラムは、初めにROM16に
保持され、起動時に動作システムによりロードアップ(load up)される。後続す
る実施例は、Java7(Sun Microsystems Inc)仮想マシーンにおける並行ガー
ベッジコレクション(concurrent garbage collection)及びメモリ管理技術に従
い、専門語は、それに応じて解釈されるべきである。しかしながら、本発明は、
Java対応システムに制限されず、並行(又はインクリメンタル)ガーベッジ
コレクションにも制限されない、すなわち単なる仮想メモリ管理に制限されるこ
とが分かる。
【0021】 以下のように、特別な意味を持つ多くの特定タームが次のように使用される。
ルートオブジェクトは、システムにおける全体的にアクセス可能な記憶されたデ
ータオブジェクトである。Javaにおいて、これらオブジェクトは、静止デー
タ領域及びスタックで表される。到達可能オブジェクトは、このシステムのルー
トオブジェクトからアクセス可能なデータ構造に接続される記憶されたデータオ
ブジェクトである。ガーベッジコレクション中に、マーキング処理は、1つのガ
ーベッジコレクションサイクルにおける全ての到達可能オブジェクトを見つけ出
すべきである。到達不可能オブジェクトは、前記データ構造に接続されないこれ
らの記憶するオブジェクトであり、これらオブジェクトは、実行しているプログ
ラムにはアクセス不可能であり、故にガーベッジコレクション候補となる。
【0022】 ファイナライズ可能オブジェクト(finalisable object)は、名前では到達不可
能とするガーベッジとなるが、まだ実施されていない空でないファイナライザ(n
on-empty finaliser)も有するデータオブジェクトである。ファイナライザがガ
ーベッジコレクタによってまだ実施されていない場合、オブジェクトがファイナ
ライズ可能だとみなされ、ファイナライザは一度だけ実施される。ファイナライ
ザ到達可能オブジェクトは、ファイナライズ可能オブジェクトからポインタを介
して到達可能である到達不可能オブジェクトの集合のサブセットであり、これら
オブジェクトは、ファイナライザによって復活又はそうでなければ修正されるの
で、ガーベッジコレクションされるべきではない。
【0023】 ミューテータースレッド(Mutator thread)は、インクリメンタルガーベッジコ
レクションシステムにおいて実施されるスレッドであり、この名前はガーベッジ
コレクションスレッドを備える記憶されたデータオブジェクトを並行に保持する
ヒープメモリ(heap memory)を変化させるこれらの効果から来ているのに対し、
ガーベッジコレクションスレッドは、ガーベッジオブジェクトを収集し、前記ヒ
ープメモリにより多くの自由空間を作ることを目的とする専用のシステムスレッ
ドである。ファイナライザスレッドは、ファイナライザを備える到達不可能オブ
ジェクトに対するファイナリゼイションコードを実行する専用のシステムスレッ
ドである。
【0024】 検出時間は、取り除かれるオブジェクトの最後の参照と、到達不可能オブジェ
クトとするそれの検出との間の時間である。マークスウィープコレクタにおいて
、これは、マークサイクルの時間によって決定される。再利用期間は、到達不可
能と検出されるオブジェクトと、それが消去されるポイントとの間の時間である
。マークスウィープガーベッジコレクタにおいて、これは、スウィープサイクル
時間及びファイナライズ可能オブジェクトの存在によって決定される。
【0025】 実例として、Sun Java仮想マシーン(Sun Java Virtual Machine) V1.0.2に用
いられるファイナライズガーベッジコレクションに対する一般に使用される技術
を最初に考えるのに利用される。典型的な非ファイナライズガーベッジコレクシ
ョンサイクルは、到達不可能なセットのガーベッジコレクションに続き、初めに
データオブジェクトを到達可能及び到達不可能なセットに前記ヒープメモリを分
割することを、実施例とは関係なく述べられている。ファイナリゼーションは、
例えば、前のように、到達可能及び到達不可能なセットにする前記ヒープメモリ
のパーティションを有するように、各ガーベッジコレクションサイクルに新しい
段階を追加し、続いて到達不可能セットをガーベッジ及びファイナライザ到達可
能セットに分割し、最後に前記ガーベッジセットのガーベッジコレクションとフ
ァイナライザ到達可能セットのファイナライザ実施とをすることでガーベッジコ
レクションを複雑にする。
【0026】 サイクルが長くなることは、前記ヒープメモリの大部分がガーベッジオブジェ
クトにより消費され、それ故に、このヒープメモリの小さなエリアが新しいデー
タアイテムを使用可能にする結果により、到達不可能となるオブジェクトとそれ
のコレクションとの間のラグ(lag)が広がることを意味する。前記サイクルにお
ける段階間の強い依存関係も、ガーベッジコレクションアルゴリズム手順として
ミューテータースレッドにおける大きな休止(pause)により、大多数の実施が良
くない並行特性を有することを意味する。典型的なシステムにおけるファイナラ
イズ可能オブジェクトの数は、アクティブオブジェクトのセットの数パーセント
だとすると、ファイナライザサポートの追加のオーバーヘッドは不均衡に大きく
なる。このシステムにおける各オブジェクトの状態は、2つの変数M及びFで特
定される。Mは、Marked(如何なるマーク状態を含む)又はUnmarkedであり、F
はFinaliser又はNo Finaliserを示す。変数M=Markedを持つオブジェクトは、到
達可能であり、マーキング処理により見つけられる一方、変数M=Unmarkedは、前
記オブジェクトが到達可能かまだ見つけられないことを示す。
【0027】 簡単なシステムにおけるガーベッジコレクション及び相互関係に関する個々の
タスクが図2に示されている。ミューテータースレッドMUは、如何なるときも
前記ヒープメモリに新しいオブジェクトを作る。マーキング段階MAは、ルート
オブジェクトからのオブジェクトのトレーシング(tracing)を含んでいる。この
トレーシングにより見つけられるオブジェクトは、M=Markedを持ち、マーキング
は、ガーベッジコレクションスレッド、又はインクリメンタルガーベッジコレク
ションの例示される場合はミューテータースレッドにおいて実行される。F−P
を分割するファイナライザは、前記ヒープメモリにわたりスウィープし、M=Unma
rked及びF=Finaliserを持つオブジェクトをキューで配することを含み、次に、
マークフェーズはファイナライズ可能オブジェクトをルートとして使用する。つ
まり、これはガーベッジコレクションGCスレッドで実行される。ファイナリゼ
イション段階FSは、前記キューにファイナライザの実施を含み、実施後にオブ
ジェクトに対しF=No Finaliserを設定する。これは、ガーベッジコレクションG
Cスレッド又は示されるように専用のファイナライザスレッドFSにおいて実行
する。
【0028】 この技術は、幾つかの良くない特性を持ち、これら特性の第1は、順次発生す
るマークフェースMA、ファイナライザパーティションF−P及びガーベッジコ
レクションスウィープGCのステップの良くない並行性(concurrency)である。
結果的に、タスク間における本来の独立性は、マルチスレッドシステムに活用で
きない。他の問題は、全てのオブジェクトに対し、一般的に長い再利用時間であ
る。(大多数となるであろう)非ファイナライザ到達可能ガーベッジに対し、ガ
ーベッジは、ファイナライザパーティションF−Pが完了するまで、このサイク
ルにおいて収集される。これは、オブジェクトがファイナリゼイションパーティ
ション中にどうしても検査されるように無駄である。インクリメンタルガーベッ
ジコレクションアルゴリズムに関し、ファイナライザパーティションF−P及び
ガーベッジコレクションGCスウィープが発生する間のミューテーターに対する
システムの休止は、容認できなほど長く、ファイナライザ到達可能マーキングフ
ェーズとヒープメモリにわたり完全なスウィープを始める。
【0029】 図3は、本発明の実施例に従うメモリ再利用方法のフローチャートである。ガ
ーベッジマーク変数(G)は、各オブジェクトに関連する。最初に、前記変数に
起因する値はなく、これは、個々のオブジェクトが到達不可能と特定されるとき
に設定される。到達可能オブジェクトを特定し、マークするマーキング段階は、
上記に述べられた又は参照されたこれら技術のような技術を使用するステップ3
00において実行される。スウィープ段階は、メモリヒープ上で実行される。マ
ークされないオブジェクト(すなわち、マーキング段階300において到達して
いないオブジェクト)は、ステップ310において既に存在するガーベッジマー
クを調べる。ガーベッジマークが見つかった場合、オブジェクトはステップ32
0において消去される。ガーベッジマークが無いことが分かった場合、オブジェ
クトはステップ330においてガーベッジマークを割り当てる。前記オブジェク
トに関連するファイナライザ変数が実施されていないファイナライザを持つこと
を示す場合、前記オブジェクトの参照がステップ340においてファイナライザ
キュー(finaliser queue)に加えられる。前記スウィープ段階は、マークされな
いオブジェクトへのガーベッジマークの割り当て、存在するガーベッジマークを
具備するデータオブジェクトの消去及びファイナライザの実施(又は実施スケジ
ュール)を有する。このマーキング段階は、ルートオブジェクトから到達可能で
あり、これらをマークする全てのオブジェクトのトラバースを含んでいる。マー
キング段階のために、実施するファイナライザ、すなわち実施スケジュールのあ
るファイナライザを持つどんなオブジェクトも、ルートオブジェクトとして扱わ
れ、よって、このオブジェクト及びそれの下位オブジェクトは、ファイナライザ
がその実施が終わるまで再利用することを防ぐ。
【0030】 ステップ310−340は、前記メモリヒープ内の各マークされないオブジェ
クトに対し繰り返される。このメモリヒープの全てが一度処理されると、前記フ
ァイナライザキューにおいて参照される各オブジェクトに対するファイナライザ
は、ステップ350において実施される。このサイクルは、これによって、前の
サイクル中に割り当てられるガーベッジマークを持ち、前記前のサイクル中にフ
ァイナライザの実施(又は実施をスケジュールした)後もガーベッジとして残っ
ているこれらオブジェクトに配されるメモリ空間を再利用する。このファイナラ
イザ実施は、参照オブジェクト及び/又はそれの到達可能な下位オブジェクト(d
escentant)の幾つかを復活する効果を有する。再利用オブジェクトは、このとき
ルートオブジェクトから到達可能である。ファイナライザが一度実施されると、
それの参照は、ファイナライザキューから取り除かれ、オブジェクトの変数Fは
、F=No Finalisarに設定される。
【0031】 次のマーク段階中に、(ファイナライザ実施の結果として)ルートオブジェク
トから到達可能であることがわかったガーベッジマークを持つ如何なるオブジェ
クトもマークされ、さらに取り除かれたガーベッジマークを有する。好ましくは
、ファイナライズするオブジェクト、ファイナライズするようにスケジュールさ
れたオブジェクト及びマーク段階のためにルートオブジェクトとして扱われるこ
れらの下位オブジェクトは、取り除かれたガーベッジマークを持たないので、こ
れらは、ファイナライザの実施が完了するとすぐに再利用される。
【0032】 後続するスウィープ段階において、ガーベッジマークを持つ全てのマークされ
ないオブジェクト、すなわち前のマークスウィープ中に特定されるが、ファイナ
ライザによって復活しないガーベッジは、上述のように、すぐに消去される。
【0033】 新しいマークされないオブジェクトが安全に(すなわち、次のマークスウィー
プサイクルを待つこと無く)消去されるかを信頼して検出する手段を提供する実
施例は、図3を参照し、上述される方法に対する発展形として記載される。この
手順は、マークキング中に見つかったファイナライザでオブジェクト数をトラッ
キングし、前記メモリヒープに配された既知である記憶された総数と比較するこ
とで実行される。ファイナリゼイションキューが前記マーキング処理に含まれる
ので、マーキング中に配されないファイナライズ可能オブジェクトのみが、前の
コレクションサイクル中に到達不可能となったオブジェクトである。全てのファ
イナライズ可能オブジェクトが前のマークフェーズにおいて配されなかったとき
、特定するためのファイナライザ到達可能オブジェクトの空ではないセットが前
記スウィープに存在する。しかしながら、全てがファイナライズ可能オブジェク
トで占められるとき、全てのマークされないオブジェクトはガーベッジであるこ
とが分かり、すぐに消去される。
【0034】 オブジェクト状態は、図3の実施例であるが、3つの新しい全体的な変数、 finaliser_count:前記ヒープメモリのファイナライズ可能オブジェクトの総数
を計算、 found_count:マーク処理中に配されるファイナライザを備えるオブジェクト数
、 shortcut:スウィープ処理がこのサイクルで動作する方法を示すフラッグ、 が追加される。
【0035】 これらタスクは、図3の実施例に対し通例実行されるが、図4のフローチャー
トによって説明されるような幾つかの例外も持つ。ミューテーターの場合、作ら
れる新しいオブジェクトはF=Finaliserを持つ場合、finaliser_countは増大する
。マーキング中に、見つかったオブジェクトがF=Finaliserを持つ場合、found_c
ountはステップ400において増大する。全ての到達可能オブジェクトがfound_
count=finaliser_countをマークされた後、ファイナライズ可能オブジェクトが
ガーベッジを持たない場合、このサイクル及び全マークされないオブジェクトは
安全に消去される。ショートカット変数は、ステップ410においてこれを示す
ために真(Tuue)に設定される。そうでなければ、このショートカット変数は、少
なくとも、このサイクルを処理すべき新しいファイナライズ可能オブジェクトが
1つあり、新しいマークされないオブジェクトが消去されないことを示す偽(Fal
se)に設定される。
【0036】 スウィープ中、変数"shortcut"が真の場合、マークされないオブジェクトは、
ステップ430において消去され、変数"shortcut"が偽の場合、図3を参照して
先に述べられたように、如何なるマークされないオブジェクトが処理される。フ
ァイナライズすることは、前のとおりに用いられるが、オブジェクトに対するフ
ァイナライザスレッドを実行した後に、FがNo Finaliserに設定され、オブジェ
クトがマークされ、found_count及びfinaliser_countの両方が減少する。
【0037】 技術が、述べられたようなインクリメンタルガーベッジコレクタに用いられる
とき、finaliser_countは、マーキングトラバース中に変化してもよい。総数を
一致させるために、found_countは、マークトラバース中に見つかった如何なる
オブジェクトを含ませず、またこの比較が誤った結果を生じる。これを避けるた
めに、マークされるファイナライズ可能オブジェクトが起きた場合、found_coun
tは、トラバース中に引かれた1を持つ。代わりに、第2の進行中のカウントpro
cessed_countは、finaliser_countと比較する前にfound_countから消去されるpr
ocessed_countで、スウィープ中に起こるマークされるファイナライザの数を記
録し続ける。
【0038】 図4は、"shortcut"変数の使用による付加的な再利用で最適なファイナリゼイ
ションモデルを示し、分かるように、図3の技術と比較して、ファイナライザが
使用されないとき、図4のモデルは1サイクルの再利用及び非ファイナライザ到
達可能データオブジェクト全てに対し最大2サイクルの再利用を保証する。
【0039】 上記に示される方法に対する1つの変数は、次のマークフェーズまで待つより
もスウィープフェーズ中に存在するような、ファイナライザ及び下位オブジェク
トをマークすることである。このやり方で、次のマークフェースの終端まで待つ
よりもスウィープフェーズの終端で、どのオブジェクトがガーベッジであること
を正確に述べることを可能にする。これは、マーク及びスウィープフェーズが並
行に実施される場合に利益となる。
【0040】 1つ以上のファイナライズ可能オブジェクトを含むデータ構造が到達不可能と
なる通常では珍しい状況において、このサイクルを検出したファイナライズ可能
の数は、マークキング処理とスウィープの進行との間の経過状態によって不確定
となる。例えば、オブジェクトF1がスウィープによって見つけられ、ファイナ
リゼイションキューに加えられ、マークされると仮定すると、F1は、他のファ
イナライズ可能オブジェクトF2を参照し、これは、このサイクルにおいて到達
不可能でもある。マーキングアルゴリズムの行動に依存して、F2は、次のサイ
クルにおけるスウィープがそれに到達する前又は後にメーカ(maker)によって到
達する。スウィーパが最初にそれに到達する場合、F2はこのサイクルをファイ
ナリゼイションリストに付加されるだけである。可能な解決法は、例えば、スウ
ィープ又はマーキング処理によって見つけられるかに関係なくオブジェクトに対
し同じアクションがとられるように、それらがマークされるようなファイナライ
ズするキューにオブジェクトを置くことである。
【0041】 積極的なマーキングアルゴリズムは、接続されたデータ構造における低いファ
イナライズ可能がファイナライザのセミ位相順序(semi-topological ordering)
となるこの構造の最上レベルとして同じサイクル中に前記キューを挿入すること
を防ぐ傾向がある。データ構造における高いオブジェクトが低いタームよりも大
きな到達可能セットを持ち、これにより、消去時に多くのオブジェクトを到達不
可能にする傾向があるので、これは、典型的にリサイクルレートを助ける。
【0042】 逆に言うと、スウィープ中に配されるファイナライズ可能のマーキングは、例
えば全ての新しい到達不可能ファイナライズ可能がファイナリゼイションキュー
に加えられるように、前記スウィープが完了するまで遅延される。これは、予測
を助け、再利用時間規定の強化を可能にする。つまり、到達不可能ファイナライ
ズ可能オブジェクトが前のマーキングフェーズにおいて検出されるときに、1サ
イクル再利用が保証される。
【0043】 図5は、図3及び図4を参照して述べられた方法の更なる発展形によって処理
されるべきファイナライズ可能データ構造を示す。これら図において、ステップ
350でファイナライザキューにおいて参照されるオブジェクトのファイナライ
ザの実施が命令される。
【0044】 図5のデータ構造500は、ポインタを参照することでリンクされる多数のデ
ータオブジェクト(510−570)を有する。データオブジェクト510,5
50及び560は、これらと関連するファイナライザ方法を有する。プログラム
処理を実施中のある点において、前記データ構造は、もはや必要なく、到達不可
能となる。前記データオブジェクトを保持するメモリヒープが命令されないとい
う事実によって、前記スウィープがデータオブジェクトを見つける命令が予測不
可能である。510より前に、データオブジェクト560が見つかることをサポ
ートすることで、前記ファイナライザキューの命令は560,510及び550
である。この命令は、データオブジェクト560は、データオブジェクト510
のファイナライザから到達可能であり、これにより、それ自身のファイナライザ
を実施する必要性を無効にする、データオブジェクト510に対するファイナラ
イザの実施中に復活可能である。
【0045】 これによって、全てのオブジェクトは、スウィープによって一度処理され、フ
ァイナライザキューは、ファイナライザの位相的実施を供給することを命令する
。幅優先検索(breadth-first search)は、ファイナライザキューに参照される各
オブジェクトからそれの下位オブジェクトへポインタを続かせることで実行され
る。前記ファイナライザキューにおいて初めに参照されるデータオブジェクトが
前記キューにおいて参照される他のデータオブジェクトから到達可能であること
が分かった場合、前記キューは再び命令されるので、データオブジェクトは、そ
れの下位オブジェクトより先に実施されるそれのファイナライザを持つ。
【0046】 この方法で、図5のファイナライザのキューは、510,560及び550に
再び命令する。
【0047】 データオブジェクトに対する参照が前記参照に挿入される場所を決定するキュ
ーを調査する、前記キューに加えられるので、ファイナライザキューにおいて参
照されるファイナライズ可能データオブジェクトの命令が交互に行われる。
【0048】 上述の実施例において、バイナリ状態の変数(G)は、ガーベッジを特定する
のに使用される。しかしながら、マルチ状態の変数が好ましくは使用される。例
えば、状態A及びBが使用され、両方ともガーベッジであるオブジェクトを示す
。あるスウィープフェーズにおいて、ガーベッジは、状態A(State A)がマーク
されるが消去されない。このスウィープフェーズの終端において、ファイナライ
ズ可能オブジェクトの如何なるファイナライザが実施される。次のスウィープフ
ェースにおいて、状態B(State B)は、ガーベッジをマークするのに使用される
。オブジェクトを状態Bでマークするとき、それは既に状態Aを持っている場合
、それはまだガーベッジであり、ファイナライザによって復活されないように安
全に消去することができる。
【0049】 ソフトウェアブラウザ実施の点で主に規定されても、当業者には上述の機能的
な特徴の多くがハードウェア又はハードウェアとソフトウェアとの組合せで同等
に実施されるよりも十分精通している。
【0050】 本開示を読むことにより、他の改良が当業者には明らかとなるであろう。この
ような改良は、データ処理の設計、製造及び使用及び/又はデータネットワーク
アクセス機器及び装置並びにそれらの部品において既に既知であり、ここに既に
記載された特徴の代わり又は加えて使用されてもよい。
【図面の簡単な説明】
【図1】 図1は、本発明を具体化するのに適したデータ処理システムのブ
ロック図である。
【図2】 図2は、従来のガーベッジコレクションシステムにおけるマーキ
ング及びスウィーピング操作の同時発生を示す。
【図3】 図3は、本発明の実施例に従うメモリ再利用方法のフローチャー
トである。
【図4】 図4は、本発明の他の実施例に従うメモリ再利用方法のフローチ
ャートである。
【図5】 図5は、ファイナライズ可能データ構造を示す。
【符号の説明】
10 CPU 12 アドレス及びデータバス 14 RAM 16 ROM 18 第1ユーザ入力装置 20 第2ユーザ入力装置 22 スピーカ 24 音声処理装置 26 表示スクリーン 28 表示ドライバ 30 ネットワークインタフェース

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】 ポインタを特定することでリンクされるデータオブジェクト
    を有するデータ構造に配されるメモリ空間を再利用する方法であって、当該方法
    は、アクティブデータオブジェクトを特定し、マークするデータ構造をトラバー
    スするステップ、前のサイクル中にガーベッジとしてマークされたデータオブジ
    ェクトを消去するステップ、ガーベッジほどアクティブにマークされないデータ
    オブジェクトをマークするステップ、及びファイナライザを持つガーベッジとし
    てマークされる如何なるデータオブジェクトのファイナライザをも実施するステ
    ップの反復性サイクルを有する方法。
  2. 【請求項2】 ファイナライザを持つガーベッジとしてマークされる如何な
    るデータオブジェクトの前記ファイナライザをも実施するステップは、実施すべ
    き各ファイナライザをキューに入れ、キューに入れられた各ファイナライザを順
    番に実施するステップを有し、アクティブデータ構造を特定し、マークするため
    のデータ構造をトラバースする前記ステップは、実施するようにキューに入れら
    れたファイナライザを持つ各オブジェクトのデータ構造をトラバースし、それ及
    びそれの下位オブジェクトをアクティブとしてマークするステップを含む請求項
    1に記載の方法。
  3. 【請求項3】 第1マーク及び第2マークは、オブジェクトをガーベッジと
    マークするために、交互サイクルに使用され、現在のサイクルに使用されるオブ
    ジェクトに対する交互マークを持つデータオブジェクトは消去される請求項1又
    は2に記載の方法。
  4. 【請求項4】 実施されないファイナライザを持つデータオブジェクトの総
    数は、ファイナライザを持つアクティブデータ構造のデータオブジェクトの総数
    と比較され、前記総数が等しい場合、アクティブとマークされないオブジェクト
    の全ては消去される先行する請求項の何れか一項に記載の方法。
  5. 【請求項5】 実施するためにキューに入れるべきファイナライザを持つデ
    ータオブジェクトに対応する前記データ構造は、実施するためキューに入れられ
    るファイナライザも持つ前記データ構造の他のデータオブジェクトを見つけるた
    めに処理され、前記他のデータオブジェクトが前記データ構造の如何なる階層に
    おいても高い場合、前記ファイナライザは、前記他のデータオブジェクトに対す
    る前記ファイナライザの後に実施するためにキューに入れられ、さもなければ、
    前記データオブジェクトが前記他のデータオブジェクトよりも前記データ構造の
    如何なる階層において高い場合、前記ファイナライザは、前記他のオブジェクト
    に対するファイナライザの前に実施するためキューに入れられる請求項2に記載
    の方法。
  6. 【請求項6】 ポインタを特定することでリンクされるデータオブジェクト
    を有するデータ構造を含むランダムアクセスメモリと結合されるデータ処理器を
    有するデータ処理装置であって、記憶される複数のデータオブジェクトで動作す
    る反復性サイクルにおいて、アクティブデータオブジェクトを特定し、マークす
    る前記データ構造をトラバースする手段、前記前のサイクル中にガーベッジとし
    てマークされたデータオブジェクトを消去する手段、ガーベッジほどアクティブ
    にマークされないデータオブジェクトをマークする手段、及びファイナライザを
    持つガーベッジとしてマークされる如何なるデータオブジェクトの前記ファイナ
    ライザをも実施する手段を供給するように構築されるデータ処理装置。
  7. 【請求項7】 ファイナライザを持つガーベッジとしてマークされる如何な
    るデータオブジェクトの前記ファイナライザをも実施する前記手段は、実施する
    ように各ファイナライザをキューに入れ、キューに入れられた各ファイナライザ
    を順番に実施する手段を有し、アクティブデータ構造を特定し、マークする前記
    データ構造をトラバースする前記手段は、実施するようにキューに入れられたフ
    ァイナライザを持各オブジェクトのデータ構造をトラバースし、それ及びそれの
    下位オブジェクトをアクティブとしてマークする手段を含む請求項6に記載のデ
    ータ処理装置。
  8. 【請求項8】 第1マーク及び第2マークは、オブジェクトをガーベッジと
    してマークするために、交互サイクルに使用され、現在のサイクルに使用される
    オブジェクトに対する交互マークを持つデータオブジェクトは消去される請求項
    6又は7に記載のデータ処理装置。
  9. 【請求項9】 実施されないファイナライザを持つデータオブジェクトの総
    数を得る手段、及び前記総数とファイナライザを持つアクティブデータ構造のデ
    ータオブジェクトの総数とを比較する手段を含み、前記総数が等しい場合、アク
    ティブとしてマークされなかったオブジェクトを全て消去する請求項6乃至8の
    何れか一項に記載のデータ処理装置。
  10. 【請求項10】 実施するためキューに入れられるファイナライザも持つ前
    記データ構造の他のデータオブジェクトを見つけるために、実施するためキュー
    に入れるべきファイナライザを持つデータオブジェクトに対応する前記データ構
    造を処理する手段と、前記キューに前記ファイナライザを挿入する手段とを含み
    、前記他のデータオブジェクトが前記データ構造の如何なる階層においても高い
    場合、前記ファイナライザは前記他のデータオブジェクトに対する前記ファイナ
    ライザの後に挿入され、前記データオブジェクトが前記他のデータオブジェクト
    よりも如何なるデータ構造の階層においても高い場合、前記ファイナライザは、
    前記他のオブジェクトに対するファイナライザより前に挿入される請求項7に記
    載のデータ処理装置。
  11. 【請求項11】 マシーンで読み取り可能であり、請求項1乃至5の特定さ
    れる一項の方法ステップを実施する指示のプログラムを1つ以上符号化するプロ
    グラム記憶装置。
JP2000609893A 1999-03-31 2000-03-09 メモリ再利用方法 Withdrawn JP2002541552A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GBGB9907283.7A GB9907283D0 (en) 1999-03-31 1999-03-31 Memory reclamation method
GB9907283.7 1999-03-31
PCT/EP2000/002094 WO2000060470A1 (en) 1999-03-31 2000-03-09 Memory reclamation method

Publications (1)

Publication Number Publication Date
JP2002541552A true JP2002541552A (ja) 2002-12-03

Family

ID=10850625

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000609893A Withdrawn JP2002541552A (ja) 1999-03-31 2000-03-09 メモリ再利用方法

Country Status (9)

Country Link
US (1) US6571260B1 (ja)
EP (1) EP1084472B1 (ja)
JP (1) JP2002541552A (ja)
KR (1) KR100715638B1 (ja)
BR (1) BR0006010A (ja)
DE (1) DE60032694T2 (ja)
GB (1) GB9907283D0 (ja)
IL (1) IL139985A (ja)
WO (1) WO2000060470A1 (ja)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1266291B1 (en) * 2000-03-24 2010-04-21 International Business Machines Corporation Method and apparatus for distinguishing reachable objects and non-reachable objects in an object-based application
US6823351B1 (en) * 2000-05-15 2004-11-23 Sun Microsystems, Inc. Work-stealing queues for parallel garbage collection
US7082597B2 (en) 2001-06-20 2006-07-25 Sun Microsystems, Inc. Representation of objects in a Java programming environment
US7103887B2 (en) * 2001-06-27 2006-09-05 Sun Microsystems, Inc. Load-balancing queues employing LIFO/FIFO work stealing
US6934741B2 (en) * 2001-06-27 2005-08-23 Sun Microsystems, Inc. Globally distributed load balancing
US7036120B2 (en) * 2001-07-31 2006-04-25 Sun Microsystems, Inc. Two tier clusters for representation of objects in Java programming environments
US7155509B1 (en) * 2002-02-26 2006-12-26 Bellsouth Intellectual Property Corp. System and method for reliably purging a fault server
EP1387253B1 (en) * 2002-07-31 2017-09-20 Texas Instruments Incorporated Dynamic translation and execution of instructions within a processor
EP1387248B1 (en) 2002-07-31 2017-08-16 Texas Instruments Inc. A processor with a split stack
EP1387256B1 (en) * 2002-07-31 2018-11-21 Texas Instruments Incorporated Program counter adjustment based on the detection of an instruction prefix
EP1387279B1 (en) * 2002-07-31 2008-05-14 Texas Instruments Inc. Cache coherency in a multi-processor system
EP1387247A3 (en) * 2002-07-31 2007-12-12 Texas Instruments Inc. System and method to automatically stack and unstack java local variables
EP1391821A3 (en) * 2002-07-31 2007-06-06 Texas Instruments Inc. A multi processor computing system having a java stack machine and a risc based processor
EP1387259B1 (en) 2002-07-31 2017-09-20 Texas Instruments Incorporated Inter-processor control
EP1387275B1 (en) * 2002-07-31 2009-06-17 Texas Instruments Inc. Memory management of local variables upon a change of context
EP1387254B1 (en) * 2002-07-31 2012-12-12 Texas Instruments Incorporated Skip instruction carrying out a test with immediate value
US7631593B2 (en) * 2002-07-31 2009-12-15 Food Equipment Technologies Company, Inc. Food processing apparatus with auto-directive controller and method
EP1387274A3 (en) * 2002-07-31 2004-08-11 Texas Instruments Incorporated Memory management for local variables
EP1387278A3 (en) * 2002-07-31 2005-03-23 Texas Instruments Inc. Methods and apparatuses for managing memory
EP1387251B1 (en) * 2002-07-31 2017-09-06 Texas Instruments Incorporated Instruction for copying data of a stack storage
US20040024969A1 (en) * 2002-07-31 2004-02-05 Texas Instruments Incorporated Methods and apparatuses for managing memory
EP1387252B1 (en) * 2002-07-31 2019-02-13 Texas Instruments Incorporated Instruction prefix to indicate system commands
EP1503291B1 (en) * 2003-07-30 2009-07-15 Texas Instruments Incorporated Reformat logic to reformat a memory access to a device
EP1391820A3 (en) * 2002-07-31 2007-12-19 Texas Instruments Incorporated Concurrent task execution in a multi-processor, single operating system environment
EP1387249B1 (en) * 2002-07-31 2019-03-13 Texas Instruments Incorporated RISC processor having a stack and register architecture
EP1387277B1 (en) * 2002-07-31 2009-07-15 Texas Instruments Incorporated Write back policy for memory
EP1387273B1 (en) * 2002-07-31 2010-07-21 Texas Instruments Incorporated Conditional garbage collection based on monitoring to improve real time performance
EP1387258A3 (en) * 2002-07-31 2008-01-02 Texas Instruments Incorporated Processor-processor synchronization
EP1387257B1 (en) * 2002-07-31 2017-08-23 Texas Instruments Inc. System to dispatch multiple instructions to available hardware resources
EP1387250B8 (en) * 2002-07-31 2012-02-29 Texas Instruments Inc. Processor that accomodates multiple instruction sets and multiple decode modes
EP1387255B1 (en) * 2002-07-31 2020-04-08 Texas Instruments Incorporated Test and skip processor instruction having at least one register operand
US7827212B2 (en) * 2003-05-22 2010-11-02 International Business Machines Corporation System and method for improved clearing of JAVA object's variables
EP1489518B1 (en) * 2003-06-19 2008-02-06 Texas Instruments Incorporated Embedded garbage collection
US7032126B2 (en) * 2003-07-08 2006-04-18 Softek Storage Solutions Corporation Method and apparatus for creating a storage pool by dynamically mapping replication schema to provisioned storage volumes
US7321908B2 (en) * 2003-07-23 2008-01-22 International Business Machines Corporational Mostly concurrent garbage collection
US20060106880A1 (en) * 2004-11-18 2006-05-18 Jeffrey Wang Managing free space in file systems
US7313566B1 (en) * 2004-12-23 2007-12-25 Sun Microsystems, Inc. Method and apparatus for isolating selected heap objects using a faulting address trap
US9454536B1 (en) 2006-09-28 2016-09-27 Emc Corporation Space compaction and defragmentation mechanisms in data space
US7647466B1 (en) * 2006-09-28 2010-01-12 Emc Corporation Linear space allocation mechanisms in data space
US7756831B1 (en) * 2006-09-28 2010-07-13 Emc Corporation Cooperative locking between multiple independent owners of data space
US8862639B1 (en) * 2006-09-28 2014-10-14 Emc Corporation Locking allocated data space
US7526623B1 (en) * 2006-09-28 2009-04-28 Emc Corporation Optimizing reclamation of data space
US8533158B1 (en) 2006-09-28 2013-09-10 Emc Corporation Reclaiming data space by rewriting metadata
US7783681B1 (en) * 2006-12-15 2010-08-24 Oracle America, Inc. Method and system for pre-marking objects for concurrent garbage collection
US8224874B2 (en) * 2010-01-05 2012-07-17 Symantec Corporation Systems and methods for removing unreferenced data segments from deduplicated data systems
US8224875B1 (en) * 2010-01-05 2012-07-17 Symantec Corporation Systems and methods for removing unreferenced data segments from deduplicated data systems
US9251184B2 (en) * 2011-01-07 2016-02-02 International Business Machines Corporation Processing of destructive schema changes in database management systems
GB2502076A (en) 2012-05-15 2013-11-20 Ibm Managing memory in a computer system
US9489293B2 (en) * 2012-08-17 2016-11-08 Netapp, Inc. Techniques for opportunistic data storage

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4914586A (en) * 1987-11-06 1990-04-03 Xerox Corporation Garbage collector for hypermedia systems
NL9001262A (nl) * 1990-06-05 1992-01-02 Oce Nederland Bv Werkwijze voor het in een logisch georganiseerd systeem, van door digrafen te representeren groepen van met elkaar in relatie staande entiteiten, distribueren van status-informatie betreffende een digraaf en een inrichting voor het toepassen van een dergelijke werkwijze.
US5392432A (en) * 1991-08-27 1995-02-21 At&T Corp. Method for automatic system resource reclamation for object-oriented systems with real-time constraints
US5274804A (en) * 1991-11-20 1993-12-28 Parcplace Systems Automatic storage-reclamation postmortem finalization process
US5577246A (en) * 1992-09-25 1996-11-19 Lucent Technologies Inc. Database memory compaction and reclamation method
US5544320A (en) * 1993-01-08 1996-08-06 Konrad; Allan M. Remote information service access system based on a client-server-service model
US6029195A (en) * 1994-11-29 2000-02-22 Herz; Frederick S. M. System for customized electronic identification of desirable objects
US5758257A (en) * 1994-11-29 1998-05-26 Herz; Frederick System and method for scheduling broadcast of and access to video programs and other data using customer profiles
JP2888164B2 (ja) * 1995-04-03 1999-05-10 ヤマハ株式会社 自動伴奏データの処理方法および自動伴奏装置
US5812134A (en) * 1996-03-28 1998-09-22 Critical Thought, Inc. User interface navigational system & method for interactive representation of information contained within a database
US5675382A (en) * 1996-04-08 1997-10-07 Connectix Corporation Spatial compression and decompression for video
US6332129B1 (en) * 1996-09-04 2001-12-18 Priceline.Com Incorporated Method and system for utilizing a psychographic questionnaire in a buyer-driven commerce system
US5974398A (en) * 1997-04-11 1999-10-26 At&T Corp. Method and apparatus enabling valuation of user access of advertising carried by interactive information and entertainment services
US6049779A (en) * 1998-04-06 2000-04-11 Berkson; Stephen P. Call center incentive system and method
US6098080A (en) * 1998-05-05 2000-08-01 International Business Machines Corporation Computer system, program product and method of collecting interned data with a mark sweep collector
GB9813264D0 (en) * 1998-06-20 1998-08-19 Koninkl Philips Electronics Nv Finalisation in incremental garbage collection
US6463432B1 (en) * 1998-08-03 2002-10-08 Minolta Co., Ltd. Apparatus for and method of retrieving images
US6327594B1 (en) * 1999-01-29 2001-12-04 International Business Machines Corporation Methods for shared data management in a pervasive computing environment

Also Published As

Publication number Publication date
WO2000060470A1 (en) 2000-10-12
KR20010025112A (ko) 2001-03-26
KR100715638B1 (ko) 2007-05-08
IL139985A0 (en) 2002-02-10
DE60032694D1 (de) 2007-02-15
GB9907283D0 (en) 1999-05-26
EP1084472B1 (en) 2007-01-03
DE60032694T2 (de) 2007-10-11
BR0006010A (pt) 2001-03-06
EP1084472A1 (en) 2001-03-21
US6571260B1 (en) 2003-05-27
IL139985A (en) 2005-08-31

Similar Documents

Publication Publication Date Title
JP2002541552A (ja) メモリ再利用方法
US6393439B1 (en) Stored data object marking for garbage collectors
US6314436B1 (en) Space-limited marking structure for tracing garbage collectors
US7010555B2 (en) System and method for compacting a computer system heap
JP5052512B2 (ja) 仮想マシン環境における予測可能な結果のガベージコレクションのためのシステム及び方法
US7069279B1 (en) Timely finalization of system resources
JP2002540503A (ja) メモリ再利用方法
JPH11212808A (ja) プログラム制御装置とメモリ割当装置および方法
JP5896952B2 (ja) メモリを管理する方法、装置およびコンピュータ・プログラム
JP2006172494A (ja) プログラム制御装置、プログラム制御方法、およびプログラム記録媒体
JP2009037546A (ja) スレッド固有領域を利用するメモリ管理方法およびその方法を用いたコンピュータ
JP2002519752A (ja) メモリ空間の動的割当て方法
US11221947B2 (en) Concurrent garbage collection with minimal graph traversal
EP1036374B1 (en) Finalisation in incremental garbage collectors
KR100722709B1 (ko) 메모리 회수 방법 및 장치
JP2004295889A (ja) データ処理システム内での処理タスクの実行を制御する方法および装置
US7584231B1 (en) Methods for determining a safe end of scan for generational garbage collection
CN100382047C (zh) 把无用方法收集到垃圾箱中的方法和系统
Ugawa et al. Improvements of recovery from marking stack overflow in mark sweep garbage collection
JP2004078750A (ja) オブジェクト管理装置および方法とプログラム
Nguyen et al. PAPER IV

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070308

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20090203

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20090317