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