JP2920660B2 - ガーベッジコレクションシステムにおけるアクセス可能なオブジェクトの判別方法 - Google Patents

ガーベッジコレクションシステムにおけるアクセス可能なオブジェクトの判別方法

Info

Publication number
JP2920660B2
JP2920660B2 JP2149285A JP14928590A JP2920660B2 JP 2920660 B2 JP2920660 B2 JP 2920660B2 JP 2149285 A JP2149285 A JP 2149285A JP 14928590 A JP14928590 A JP 14928590A JP 2920660 B2 JP2920660 B2 JP 2920660B2
Authority
JP
Japan
Prior art keywords
data
garbage collection
pointer
object table
accessible
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.)
Expired - Fee Related
Application number
JP2149285A
Other languages
English (en)
Other versions
JPH0442338A (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.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
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 Fuji Xerox Co Ltd filed Critical Fuji Xerox Co Ltd
Priority to JP2149285A priority Critical patent/JP2920660B2/ja
Publication of JPH0442338A publication Critical patent/JPH0442338A/ja
Application granted granted Critical
Publication of JP2920660B2 publication Critical patent/JP2920660B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Memory System (AREA)

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明はガーベッジコレクションのシステムにおける
アクセス可能なオブジェクトの判別方法に関する。
〔従来の技術〕
従来のガーベッジコレクシンシステムには、オブジェ
クトポインタ(ガーベッジコレクションシステムで管理
するヒープ領域内のオブジェクトへのポインタ)と、整
数などのデータとを区別するのに、タグを用いたり、あ
るいはオブジェクトの種類毎に定められたメモリ領域に
オブジェクトを格納したりしているものがある。これに
よってアクセス可能なオブジェクトの判別を行い、ガー
ベッジコレクションを実行するようにしている。
また、「John Wiley&Sons,Ltd」発行の「Boehm H−
J.,and Weiser,M.,“Garbage Collection in an Uncoop
erative Environment",Software Practice and Experie
nce,Vol.18(9),September 1988,pp.807−820.」(以
下、文献という)には、オブジェクトポインタの可能性
がある全てのデータ(レジスタ、スタック、データ領域
など)の中で、アロケータが管理している正当なオブジ
ェクトアドレスと同じものは、アクセス可能なオブジェ
クトへのポインタであると仮定し、ガーベッジコレクシ
ョンを行うようにするものが記載されている。この文献
に記載されているカーベッジコレクタのアクセス可能な
オブジェクトの判別方法では、データを標準のマシン表
現(32ビット整数等)で扱うことができるので実行効率
が低下することがなく、またコンパイラ等を変更しなく
てもC、Pascal等の一般の言語で使用することができ
る。
〔発明が解決しようとする課題〕
ところが、上記従来のアクセス可能なオブジェクトの
判別方法では、タグを用いて判別する方法にあっては、
例えば、ポインタや整数などを32bitのデータで表現す
る場合には、タグ用に1bit割り当てなければならないの
で、ポインタあるいは整数そのものを示すデータは31bi
tとなってしまい、このためデータ(31bitで表現されて
いるポインタあるいは整数)を標準のマシン表現(32ビ
ット整数等)で扱うことができないので、実行効率が低
下してしまう。またオブジェクトの種類に応じたメモリ
領域にオブジェクトを格納して、アクセス可能なオブジ
ェクトを判別する方法にあっては、特殊なデータ表現を
必要とするため、C、Pascal等の一般の言語でガーベッ
ジコレクションを実行するには、コンパイラ等を変更す
る必要がある。
一方、上記文献に記載されているカーベッジコレクタ
の判別方法では、整数等の値と正当なオブジェクトアド
レス(オブジェクトポインタ)とが同一であった場合に
は、オブジェクトポインタが直接ヒープ領域内のオブジ
ェクトを指しているので、オブジェクトポインタを書替
えることができない。従って、実行効率の良いコピー型
ガーベッジコレクションと組み合わせることや、ヒープ
領域のフラグメンテーションが起こった場合にコンパク
ションを行うことができない。
また、上記文献に記載されているガーベッジコレクタ
の判別方法では、アロケータが管理している正当なオブ
ジェクトアドレスと同じかどうかを判別するのが複雑で
ある。
本発明は上記実情に鑑みてなされたものであり、実行
効率の良いガーベッジコレクションを行うことができる
とともに、ヒープ領域にフラグメンテーションが起こっ
た場合であってもコンパクションを行うことのできるガ
ーベッジコレクションシステムにおけるアクセス可能な
オブジェクトの判別方法を提供することを目的とする。
〔課題を解決するための手段〕
上述した課題を解決するために、本発明に係るガーベ
ッジコレクションシステムにおけるアクセス可能なオブ
ジェクトの判別方法では、ヒープ領域内のオブジェクト
への直接的なポインタを記憶するオブジェクトテーブル
を設け、前記ヒープ領域内のオブジェクトへは前記オブ
ジェクトテーブルを介して間接的なポインタで参照し、
ガーベッジコレクションの開始点を示すデータ領域内の
各データ値が、前記オブジェクトテーブルのアドレスの
範囲内ならば、該データ値を前記間接的なポインタであ
ると判断して、該間接的なポインタからつながる一連の
オブジェクトをアクセス可能とすることを特徴とする。
〔作用〕
本発に係るガーベッジコレクションシステムにおける
アクセス可能なオブジェクトの判別方法では、ヒープ領
域内のオブジェクトへの直接的なポインタを記憶するオ
ブジェクトテーブルを設け、ガーベッジコレクションの
開始点を示すデータ領域内の各データ値が、オブジェク
トテーブルのアドレスの範囲内であるか否かによって、
該データ値をアクセス可能であるか否かを判別すること
としたので、ガーベッジコレクションを効率良く行うこ
とができる。
〔実施例〕
以下、本発明に係るガーベッジコレクションシステム
におけるアクセス可能なオブジェクトの判別方法の実施
例を、添付図面を参照して説明する。
第1図は本発明に係るアクセス可能なオブジェクトの
判別方法を説明するための図である。
このオブジェクト判別方法では、データ領域1、レジ
スタ及びスタック2から、ヒープ領域3へはオブジェク
トテーブル4を介して間接的に参照する。すなわち、オ
ブジェクトテーブル4のエントリ内にヒープ領域3への
ポインタを持ち、データ領域1、レジスタやスタック2
は、ヒープを参照する部分のオブジェクトテーブルエン
トリへのポインタを持っている。
このオブジェクト判別方法を適用したガーベッジコレ
クションシステムでは、オブジェクトポインタ(ガーベ
ッジコレクションシステムで管理するヒープ領域内のオ
ブジェクトへのポインタ)の可能性がある全てのデータ
(レジスタ、スタック、データ領域など)の中で、後述
する条件I〜IIIを全て満たすものは、アクセス可能な
オブジェクトへのポインタ(実際にはオブジェクトテー
ブルエントリへのポインタ)であると仮定し、ガーベッ
ジコレクションを行う。
I)データの値が、オブジェクトテーブルが占めるアド
レスの範囲内にある。範囲内になければオブジェクトポ
インタではない。
II)データの値のオブジェクトテーブルヘッダからのオ
フセットが、オブジェクトテーブルエントリのサイズの
倍数である。倍数でなければオブジェクトポインタでは
ない。
III)データの示すオブジェクトテーブルエントリが使
用されている。使用されていなければオブジェクトポイ
ンタではない。
なお、整数等の値がたまたま上記条件I〜IIIを全て
満たす場合があっても、オブジェクトテーブルエントリ
内のヒープ領域へのポインタの値を書き換えることによ
り、オブジェクトを移動することが可能である。
第2図は本発明に係るアクセス可能なオブジェクトの
判別方法を適用したガーベッジコレクションシステムの
一実施例を示す構成図である。
この実施例では、本発明に係るアクセス可能なオブジ
ェクトの判別方法を適用したマーク&スイープ型ガーベ
ッジコレクションシステムの動作について説明する。
図示しないメモリにはヒープ領域10とオブジェクトテ
ーブル20とが割り当てられている。
オブジェクトテーブル20には、ヒープ領域10内のオブ
ジェクトへのポインタと、そのポインタで指定されるオ
ブジェクトが参照されたことを示すマークとを記憶する
複数のオブジェクトテーブルエントリ20Aが設けられて
いる。
ヒープ領域10とオブジェクトテーブル20のメモリ配置
では、ヒープ領域10を高アドレスに配置する。ここで、
第2図に示すように、ヒープ領域10のトップアドレスを
HeapTop、ヒープ領域10のボトムアドレスをHeapBotto
m、オブジェクトテーブル20のトップアドレスをOTTop、
オブジェクトテーブル20のボトムアドレスをOTBottomと
すると、OTTop<=HeapBottomが成り立つ。
またオブジェクトテーブル20のエントリサイズをOTEn
trySizeとする。ここで、OTBottomとOTTop間はOTEntrSi
zeの倍数になるようにする。
なお使用されていないオブジェクトテーブルエントリ
20A(第2図の斜線で示すエントリ)は、フリーリスト
(FreeList)30からのリストを構成する。リストの最後
のエントリには「0」が記述されている。
そしてレジスタ及びスタック40、データ領域50からヒ
ープ領域10内のオブジェクトへは、オブジェクトテーブ
ル20を介して間接的に参照する。
次にマーク&スイープ型ガーベッジコレクションシス
テムのガーベッジコレクション動作を説明する。
最初に、ガーベッジコレクションのマークフェーズに
おいて、レジスタ及びスタック40、データ領域50の全て
のデータの中で、後述する条件〜を全て満たすもの
は、アクセス可能なオブジェクトへのポインタ(実際に
はオブジェクトテーブルエントリへのポインタ)である
と仮定し、それらのポインタをルートとして再帰的にオ
ブジェクトテーブルエントリ20A内にマークしていく。
ここで、調べるデータの値をdataとすると、 :OTBottom<=data<OTTop (上述した条件Iに対応している) :data mod OTEntrySize=0 (dataがOTEntrySizeの倍数であること) (上述した条件IIに対応している) :contents of data address>=HeapBottom (オブジェクトテーブルエントリが使用されているこ
と) (上述した条件IIIに対応している) 上記条件〜の全てを満足する場合は、アクセス可
能なオブジェクトへのポインタ(実際にはオブジェクト
テーブルエントリへのポインタ)であると仮定する。
一方、スイープフェイズでは、全てのオブジェクトテ
ーブルエントリ20Aの中で、オブジェクトテーブルエン
トリ20A内にマークされていないオブジェクトを回収す
る。
第3図は本発明に係るアクセス可能なオブジェクトの
判別方法を適用したガーベッジコレクションシステムの
他の実施例を示す構成図である。
この実施例では、本発明に係るアクセス可能なオブジ
ェクトの判別方法を適用したジェネレーションキャベン
ジ型ガーベッジコレクションシステムの動作について説
明する。
第3図において、第2図に示した構成部分と同様機能
を果たす部分には同一の符号の付している。
ヒープ領域100とオブジェクトテーブル20のメモリ配
置では、ヒープ領域100を高アドレスに配置する。
ここで、第3図に示すように、ヒープ領域100のトッ
プアドレスをHeapTop、ヒープ領域100のボトムアドレス
をHeapBottom、オブジェクトテーブル20のトップアドレ
スをOTTop、オブジェクトテーブル20のボトムアドレス
をOTBottomとすると、OTTop<=HeapBottomが成立す
る。
また同図に示すように、ヒープ領域100は、高アドレ
スから順に、クリエーションスペース(CreationSpac
e)101、サバイバスペース(SurvivorSpace)1、サバ
イバスペース(SurvivorSpace)2、オールドスペース
(OldSpace)102から構成されている。クリエーション
スペース101とサバイバスペース1、2とをまとめてニ
ュースペース(NewSpace)103とする。
ここで、第3図に示すように、ニュースペース103の
トップアドレスをNewTop、ニュースペース103のボトム
アドレスをNewBottom、オールドスペース102のトップア
ドレスをOldTop、オールドスペース102のボトムアドレ
スをOldBottomとする。
またオブジェクトテーブル20のエントリサイズをOTEn
trySizeとする。ここで、OTBottomとOTTop間はOTEntryS
izeの倍数になるようにする。
なお使用されていないオブジェクトテーブルエントリ
20A(第3図の斜線で示すエントリ)は、フリーリスト
(FreeList)30からのリストを構成する。リストの最後
のエントリには「0」が記述されている。
そしてレジスタ及びスタック40、データ領域50からヒ
ープ領域100内のオブジェクトへは、オブジェクトテー
ブル20を介して間接的に参照する。
次にジェネレーションスキャベンジ型ガーベッジコレ
クションシステムのガーベッジコレクション動作を説明
する。
最初に、ガーベッジコレクションのジェネレーション
交代フェーズではレジスタ及びスタック40、データ領域
50、それとオールドスペース102内の全てのデータの中
で、後述する条件a〜cを全て満足するものは、生き残
らせるべきオブジェクトへのポインタ(実際にはオブジ
ェクトテーブルエントリへのポインタ)であると仮定
し、それらのポインタをルートとして再帰的に、2つあ
るサバイバスペースのうち空いているほうのサバイバス
ペースに、クリエーションスペース101内のオブジェク
トをコピーしていく。
ここで調べるデータの値をdataとすると、 a):OTBottom<=data<OTTop (上述した条件Iに対応している) b):data mod OTEntrySize=0 (dataがOTEntrySizeの倍数であること) (上述した条件IIに対応している) c):contents of data address>=NewBottom (オブジェクトテーブルエントリが使用されていて、か
つそれがNewSpace内のオブジェクトポインタであるこ
と) (上述した条件IIIに対応している) 上記条件a〜cの全てを満足している場合は、生き残
らせるべきオブジェクトへのポインタ(実際にはオブジ
ェクトテーブルエントリへのポインタ)であると仮定す
る。
なお上述したクリエーションスペース101内のオブジ
ェクトのコピーに際しては、周知のように、最初の全デ
ータに関して生き残らせるべきオブジェクトをサバイバ
スペース1にコピーしたら、次の全データに関して行き
残らせるべきオブジェクトを、空いているサバイバスペ
ース2にコピーし、以下同様にして、サバイバスペース
1とサバイバスペース2とに交互にコピーしていくこと
になる。
上記各実施例によれば、ポインタの値と整数等の値と
が同じ条件であっても、レジスタ、スタック、データ領
域内のデータのポインタは直接ヒープ領域内のオブジェ
クトを指していないので、オブジェクトテーブルエント
リ内のヒープ領域へのポインタの値を書き換えることが
でき、これによりオブジェクトを移動することが可能で
ある。すなわち、スタック、レジスタなどの値を書換え
る必要がない(なお、書換えた場合には誤動作する虞が
極めて大きい)。
以上説明したように本実施例によれば、次に示すよう
な利点がある。
:オブジェクトの判別には、タグを用いていないの
で、ポインタや整数などのデータを標準のマシン表現
(32ビット整数等)で扱うことができるので、実行効率
の低下を防止することができる。
:オブジェクトの種類に応じたメモリ領域にオブジェ
クトを格納するようにしていないので、特殊なデータ表
現を必要としないため、コンパイラ等の変更がなくて
も、C、Pasclなどの一般の言語で使用することができ
る。
:ヒープ領域へのポインタの値を書換えることによ
り、ヒープ領域内のオブジェクトを移動することが可能
となるので、コピーコピー型ガーベッジコレクションと
組み合わせて実行効率の良いガーベッジコレクションを
行うことができる。
:ヒープ領域へのポインタの値を書換えることによ
り、ヒープ領域内のオブジェクトを移動することが可能
となるので、コンパクションを行いヒープ領域のフラグ
メンテーションを防ぐことができる。
:ヒープを参照する領域内のデータがアクセス可能な
オブジェクトへのポインタであるかどうかを調べる手順
が簡単になる。
〔発明の効果〕
以上説明したように本発明では、ヒープ領域内のオブ
ジェクトへの直接的なポインタを記憶するオブジェクト
テーブルを設け、ガーベッジコレクションの開始点を示
すデータ領域内の各データ値が、オブジェクトテーブル
のアドレスの範囲内であるか否かによって、該データ値
をアクセス可能であるか否かを判別するよう構成したの
で、下記に示す効果が得られる。
1)ガーベッジコレクションを効率良く行うことができ
る。
2)オブジェクトポインタと整数などのデータとを効率
良く区別することができる。
3)タグビットなどが必要なくなり、データを標準のマ
シン表現(32ビット整数等)で取り扱うことができる。
4)コンパイラを変更しなくても、C言語やPascalなど
の一般の言語を使用することができる。
5)オブジェクトテーブル内のポインタの値を書き換え
ることによってオブジェクトを容易に移動することがで
き、ヒープ領域にフラグメンテーションが生じた場合で
あっても、コンパクションを行うことによりメモリを有
効利用することができる。
【図面の簡単な説明】
第1図は本発明に係るアクセス可能なオブジェクトの判
別方法を説明するための説明図、第2図は本発明に係る
アクセス可能なオブジェクトの判別方法を適用したガー
ベッジコレクションシステムの一実施例を示す構成図、
第3図は本発明に係るアクセス可能なオブジェクトの判
別方法を適用したガーベッジコレクションシステムの他
の実施例を示す構成図である。 10、100……ヒープ領域、20……オブジェクトテーブ
ル、20A……オブジェクトテーブルエントリ、30……フ
リーリスト、40……レジスタ及びスタック、50……デー
タ領域。

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】ヒープ領域内のオブジェクトへの直接的な
    ポインタを記憶するオブジェクトテーブルを設け、 前記ヒープ領域内のオブジェクトへは前記オブジェクト
    テーブルを介して間接的なポインタで参照し、 ガーベッジコレクションの開始点を示すデータ領域内の
    各データ値が、前記オブジェクトテーブルのアドレスの
    範囲内ならば、該データ値を前記間接的なポインタであ
    ると判断して、該間接的なポインタからつながる一連の
    オブジェクトをアクセス可能とする ことを特徴とするガーベッジコレクションシステムにお
    けるアクセス可能なオブジェクトの判別方法。
JP2149285A 1990-06-07 1990-06-07 ガーベッジコレクションシステムにおけるアクセス可能なオブジェクトの判別方法 Expired - Fee Related JP2920660B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2149285A JP2920660B2 (ja) 1990-06-07 1990-06-07 ガーベッジコレクションシステムにおけるアクセス可能なオブジェクトの判別方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2149285A JP2920660B2 (ja) 1990-06-07 1990-06-07 ガーベッジコレクションシステムにおけるアクセス可能なオブジェクトの判別方法

Publications (2)

Publication Number Publication Date
JPH0442338A JPH0442338A (ja) 1992-02-12
JP2920660B2 true JP2920660B2 (ja) 1999-07-19

Family

ID=15471854

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2149285A Expired - Fee Related JP2920660B2 (ja) 1990-06-07 1990-06-07 ガーベッジコレクションシステムにおけるアクセス可能なオブジェクトの判別方法

Country Status (1)

Country Link
JP (1) JP2920660B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2563029Y2 (ja) * 1992-05-01 1998-02-18 株式会社小松製作所 カムシャフトミラーのワーク支持装置
US6480862B1 (en) * 1999-04-23 2002-11-12 International Business Machines Corporation Relation-based ordering of objects in an object heap
JP4490761B2 (ja) * 2004-08-17 2010-06-30 Hoya株式会社 モールドプレス成形型、及び光学素子の製造方法
US8862640B2 (en) 2011-04-25 2014-10-14 Microsoft Corporation Conservative garbage collecting and tagged integers for memory management
US10180902B2 (en) * 2015-06-30 2019-01-15 International Business Machines Corporation Pauseless location and object handle based garbage collection

Also Published As

Publication number Publication date
JPH0442338A (ja) 1992-02-12

Similar Documents

Publication Publication Date Title
US6928460B2 (en) Method and apparatus for performing generational garbage collection in a segmented heap
US6424977B1 (en) Train-algorithm-based garbage collector employing reduced oversized-object threshold
US6434577B1 (en) Scalable-remembered-set garbage collection
US6434576B1 (en) Popular-object handling in a train-algorithm-based garbage collector
US6185581B1 (en) Train-algorithm-based garbage collector employing fixed-size remembered sets
US6415302B1 (en) Train-algorithm-based garbage collector employing farthest-forward-car indicator
US6449626B1 (en) Reduced-cost remembered-set processing in a train-algorithm-based garbage collector
US4807120A (en) Temporal garbage collector with indirection cells
JP2564483B2 (ja) 接続されたユ−ザのプロセツサとは独立の並列ガ−ベツジコレクシヨン機能を有するコンピユ−タ記憶装置
JP3628032B2 (ja) コンサーバティブ・スタックとジェネレイショナル・ヒープガーベージ・コレクション用コンピュータシステム及び方法
US6826583B1 (en) Local allocation buffers for parallel garbage collection
US7389395B1 (en) Split-reference, two-pass mark-compaction
US6105040A (en) Method and apparatus for managing stored objects
US7058670B2 (en) Scalable, space-efficient, parallel remembered-sets
JP2002506550A (ja) 部分的に再配置されたオブジェクトのソース及び目標インスタンスに関する書込みバリアを含む有界休止時間ガーベッジコレクションシステム及び方法
JP2002506549A (ja) 部分的に再配置されたオブジェクトのソースインスタンスに関連する書き込みバリアを含む有界休止時間ガーベッジコレクションシステム及びその方法
US6427154B1 (en) Method of delaying space allocation for parallel copying garbage collection
US6999979B2 (en) Efficient encoding of references into a collection set
US20040186863A1 (en) Elision of write barriers for stores whose values are in close proximity
US7499961B2 (en) Method and apparatus for limiting the size and facilitating maintenance of remembered sets in a space incremental garbage collector
US6721865B2 (en) Elimination of coloring during object creation for concurrent garbage collection
JP2920660B2 (ja) ガーベッジコレクションシステムにおけるアクセス可能なオブジェクトの判別方法
US20040172507A1 (en) Better placement of objects promoted into a generation managed by the train algorithm
US7653793B1 (en) Use of memory protection to implement replicating collection in an incremental, copying garbage collector
JP3868585B2 (ja) メモリ管理装置及びコンピュータ読み取り可能な記録媒体

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080430

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090430

Year of fee payment: 10

LAPS Cancellation because of no payment of annual fees